The concept is simple: whenever someone opens a particular sheet they get a message box asking if they would like to refresh data, if the answer is yes than it runs a macro (clears the sheet and then cuts and pastes data from other sheets).

The problem: if I click "yes" it runs the macro but repeats the first step twice (clear, copy, paste, clear) and the message box appears again and again and again. if I click "no" after i've clicked "yes" i get data followed by a Debug error.

The macro works on it own.

Please help!!!

Module:
Public Sub JEMaster1()
Worksheets("Report Master").Activate
Range("A1").Activate
Cells.Select
Selection.Clear

Worksheets("JM List").Activate
Range("N1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Worksheets("Report Master").Activate
Range("A1").PasteSpecial Paste:=xlPasteValues
Selection.PasteSpecial Paste:=xlPasteFormats

Worksheets("KB List").Activate
Range("N2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Worksheets("Report Master").Select
a = LASTINCOLUMN(Range("A1"))
Dim c As String
c = Range(a).Address
Range(c).Offset(0, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
Selection.PasteSpecial Paste:=xlPasteFormats
End Sub

Function LASTINCOLUMN(rngInput As Range)
Dim WorkRange As Range
Dim i As Integer, CellCount As Integer
Application.Volatile
Set WorkRange = rngInput.Columns(1).EntireColumn
Set WorkRange = Intersect(WorkRange.Parent.UsedRange, WorkRange)
CellCount = WorkRange.Count
For i = CellCount To 1 Step -1
If Not IsEmpty(WorkRange(i)) Then
LASTINCOLUMN = WorkRange(i).Address
Exit Function
End If
Next i
End Function

JE Master Sheet:
Private Sub YesNoMessageBox1()
Dim Answer As String
Dim MyNote As String

MyNote = "REFRESH DATA?"

Answer = MsgBox(MyNote, vbQuestion + vbYesNo, "REFRESH DATA")

If Answer = vbNo Then
Else
Call JEMaster1
End If
End Sub

Private Sub Worksheet_activate()
Call YesNoMessageBox1
End Sub