无法将工作簿variables设置为ActiveWorkbook

这是在吹我的脑海。 我找不到我做错了什么。 我希望这只是一个隧道视野的例子。 我收到错误消息“对象variables或块variables未设置-1”

Option Explicit: Public mWB As Workbook Public Sub runCSSBatch() On Error GoTo Errorcatch 1 mWB = ActiveWorkbook Call createTempSheet Call findworksheet Errorcatch: MsgBox Err.Description & "-" & Erl Application.DisplayAlerts = False mWB.Sheets("TEMP").Delete Application.DisplayAlerts = True End Sub 

而不是ActiveWorkbook,它可能是ThisWorkbook

 set mwb=thisworkbook 

我最终发现我的脚本有很多错误。

  • 我最终使用ActiveWorkbook前面的设置(使用ThisWorkbook是没有必要的)
  • 我相信有关使用1:而不是1来捕捉错误的评论是有效的。
  • 我现在正在用比以前less了几个字来运行这个脚本。
  • 当我排除另一个时,我也犯了在Range()内使用Cells()的错误
  • 我试图将一个工作表variables传递给一个子(显然你不能这样做)。
  • 我确定有更多,但我不记得。

我要把它当成是一个糟糕的一天。 :/你可以看到下面的代码看起来没有像我最初发布的东西。

 Option Explicit: Public mWB As Workbook Public Sub runCSSBatch() Set mWB = ActiveWorkbook mWB.Sheets.Add.Name = "TEMP" Dim WSh As Worksheet For Each WSh In mWB.Worksheets If InStr(WSh.Name, "CSS") = 1 Then Call parseRowText(WSh.Name) End If Next End Sub Private Sub parseRowText(WSName As String) Dim rowCount As Long Dim I As Long Dim columnCount As Long Dim B As Long Dim dataString As String Dim WS As Worksheet Set WS = mWB.Worksheets(WSName) columnCount = mWB.Sheets(WSName).UsedRange.Columns.Count rowCount = mWB.Sheets(WSName).UsedRange.Rows.Count For I = 2 To rowCount For B = 1 To columnCount dataString = "" If mWB.Sheets(WSName).Cells(1, B).Value = "STOP" Then dataString = "}" Call addToTempSheet(dataString) Exit For Else If B = 1 Then dataString = mWB.Sheets(WSName).Cells(I, B).Value & "{" Call addToTempSheet(dataString) Else If dataString & mWB.Sheets(WSName).Cells(I, B).Value = "" Then Else dataString = mWB.Sheets(WSName).Cells(1, B).Value & ":" dataString = dataString & mWB.Sheets(WSName).Cells(I, B).Value & ";" Call addToTempSheet(dataString) End If End If End If Next B Next I End Sub Private Sub addToTempSheet(dString As String) mWB.Sheets("TEMP").Range("A" & Rows.Count).End(xlUp).Offset(1).Value = dString End Sub