当其他宏运行并关闭用户窗体时,宏第二次给出错误91

时间:2015-02-24 11:04:44

标签: excel vba excel-vba object

我有两个宏。通过最小化色带和放大功能,一个宏用于为不同的显示器重新调整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

0 个答案:

没有答案