I have an issue with activating a sheet from a user form, the same code works fine in Excel 2003 to Excel 2010, doesn't work with Excel 2013.
This is how to simply reproduce the issue:
Have a workbook with 2 worksheets in it, called Sheet1
and Sheet2
let's say, and on Sheet1
2 buttons:
On click of Button1
activates Sheet2
worksheet using a Macro1
with 1 line in it:
ThisWorkbook.Sheets("Sheet2").Select
and I can edit data from it fine.
On click of Button2
a UserForm1
pops up and on click of CommandButton1
call same Macro1 like this:
Unload Me
Macro1
the Sheet2
worksheet is activated, sort of, but if I edit data in it, it actually updates corresponding cells in Sheet1, if I click on Sheet1
I can see data entered in there!
Clicking back to Sheet2
worksheet activates the Sheet2
sheet properly.
Has anyone seen such behaviour? If yes, are there any coding workarounds to properly activate Sheet2
?
Wow, I was able to reproduce this error using 2013. This is a fantastic failure of Excel's new SDI Interface. What is also interestingly odd is that when you follow the following steps
A1
on Sheet1
B2
on Sheet2
Button2
which opens the formCommandButton1
on the form (which hides the form and activates Sheet2
)it looks like cell B2
on Sheet2
is selected, but when you start typing, the text is going into cell A1
; Once you hit Enter the text disappears to cell B2
on Sheet1
You almost have to see it to believe it.
The only thing that I've found that works is using the Ontime
function.
Private Sub CommandButton1_Click()
Unload Me
'Call Macro1
Application.OnTime Now(), "Macro1"
End Sub
...but I have a feeling that this isn't going to help everyone