我已經搜索了問題,發現一些非常接近,但我仍然做錯了什麼。我想在下面的代碼使用變量工作表名稱:在Excel宏中沒有看到變量
Option Explicit
Dim wrkPro As String
Dim wrkFFIS As String
Sub MainLoop()
'*************************************************************************************************************************
'*
'*************************************************************************************************************************
Dim FFISno As Range '* Admustments
Dim ProTracksno As Range '* Contracts
Dim FFISnx As String '* Corrected Contract Number
Dim PTdte As Date
Dim FFISdte As Date
Dim orow As Integer
Dim frow As Integer
Dim prow As Integer
Dim rngRange As Range
orow = 2 '* Output Row
frow = 2 '* FFIS Row
prow = 7 '* ProTracks Row
'* Set Worksheet for input ...
wrkPro = CStr(Sheets("SysCtrl").Cells(4, 2).Value) & "ProTracts"
wrkFFIS = CStr(Sheets("SysCtrl").Cells(4, 2).Value) & "FFIS"
'* Clear the Recap Sheet
Sheets("Recap").Range("A2, B5000").ClearContents
'* Sheets("Recap").Rows(CStr(orow) & ":" & CStr(Worksheets("Recap").Cells(Rows.Count, 1).End(xlUp).Row)).ClearContents
'* Sheets("Recap").Cells(1, 1).Select
BeginLoop:
'* Do until EOF on ProTracks Table
Do While Sheets(wrkPro).Cells(prow, 7) <> "" And Sheets(wrkFFIS).Cells(frow, 4) <> ""
當我運行它,我得到的下標超出範圍的錯誤。我已經檢查過,變量中有正確的值,但它並沒有在Do While中用作字符串。
我嘗試在字符串前後添加Char(34),並將Dim設置爲Public,如其他帖子中所建議的,但沒有喜悅。
任何建議,將不勝感激。
卡特
在一個體面的一瞥代碼喜歡在你是如何想獲得SHEETNAME條款固體。我會做一個測試來確保'wrkPro/wrkFFIS'變量的sheetname完全像工作簿中的sheetname一樣。因此,在爲每個位置設置字符串「debug.print wrkPro」和「debug.print wrkFFIS」並確保其名稱存在於您的WB中之後。另外,請嘗試刪除'Cstr'包裝? –
嘗試調試您的代碼:在以wrkPro =開頭的行中設置一個斷點(在此行中按F9),然後運行代碼。一旦它停在這裏,你可以用F8逐行執行。在即時窗口(Ctrl-G)中,你可以檢查你的變量('Debug.Print wrkPro',在Locals窗口(View-> Locals)中,你可以直接看到它。確保wrkPro'的內容完全匹配您的工作表名稱 - 您可以使用'Debug.Print Sheet1.Name = wrkPro'進行檢查 - 只需使用工作表的代碼名稱替換'Sheet1' - 您可以在左側列表中的VBA編輯器中看到此內容 –