我有两个宏。通过最小化色带和放大功能,一个宏用于为不同的显示器重新调整Excel工作表的大小。另一个宏,我可以使用用户输入的文本在特定的Excel工作表中编写一些问题。此宏激活用户可以输入数据的用户表单。 第一个宏在所有excel表中完美运行,如预期的那样。如果我一次运行第二个宏并尝试再次运行第一个宏。它总是在 "行中的第一个宏上给对象变量而不设置错误。 MaxCol =行(1)...."。 我必须关闭并重新打开它才能再次运行第一个宏。
我不知道为什么会这样。如果用户按下确定或取消,我已正确关闭(卸载)Userform的对象。
下面是第一个宏的代码。
Sub OptimalSize()
Dim SheetName As String
Dim MaxCol As Long
SheetName = ""
MaxCol = 0
CommandBars.ExecuteMso "MinimizeRibbon"
Application.WindowState = xlMaximized
SheetName = ActiveSheet.Name
MaxCol = Rows(1).Find(1, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
Sheets(SheetName).Select
ActiveSheet.Range("A1", Cells(1, MaxCol)).Select
ActiveWindow.Zoom = True
Application.Goto Reference:=Worksheets(SheetName).Range("A1"), Scroll:=True
End Sub
调用userform
的一些计算后的第二个宏Sub ProblemBoard()
' code here to find out empty space in a table!!'
Userform1.Show
End sub
下面的用户形式代码
Sub CommandButton1_Click()
Application.ScreenUpdating = False
Worksheets("Problem Board").Cells(z, 2).Value = TextBox1.Text
Worksheets("Problem Board").Cells(z, 5).Value = TextBox2.Text
Unload Me
Sheets(ActWS).Select
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton2_Click()
Unload Me
Sheets(ActWS).Select
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Initialize()
Dim lng As Long
'ActWS = ActiveSheet.Name
lng = Sheets("Listen").Range("A65536").End(xlUp).Row
Me.ComboBox2.List = Sheets("Listen").Range("A2:A" & lng ).Value
TextBox1 = ""
TextBox2 = ""
End Sub