[英]Using a variable to declare a worksheet by its number in Excel VBA
晚上好。 我迫切需要一些簡短的VBA代碼幫助。
Public TFOCUS As Integer ' Creates TFOCUS, which is the worksheet in focus
Public RFOCUS As Integer ' Creates RFOCUS, which is the row in focus
Public CFOCUS As String ' Creates CFOCUS, which is the column in focus
Public RECORD As Integer ' Creates RECORD, wich is the row that is having the record written to
FILEPATH.Worksheets(TFOCUS).Range(Cells(RFOCUS, B)).Value = Worksheets(3).Range(Cells(RECORD, A)).Value 'copies focus EmpID to destination
FILEPATH.Worksheets(TFOCUS).Range(Cells(4, CFOCUS)).Value = Worksheets(3).Range(Cells(RECORD, B)).Value 'copies focus Course to destination
FILEPATH.Worksheets(TFOCUS).Range(Cells(RFOCUS, CFOCUS)).Value = Worksheets(3).Range(Cells(RECORD, C)).Value 'copies focus Date to destination
CFOCUS = CFOCUS + 1 'moves focus to next column
RECORD = RECORD + 1 'creates next record
FILEPATH設置為外部Excel工作簿的路徑。 在這種情況下,TFOCUS設置為1,RFOCUS設置為5,CFOCUS設置為“ Q”,RECORD設置為1。
目的是將記錄從外部excel文檔復制到活動電子表格中,並通過移動單元格內容來重新格式化它們。 這將用於移動多個源,並且必須處理每個源文檔中的每個選項卡(都可以命名為不同的名稱)。
我遇到的問題是,我在以下行上收到運行時錯誤13:編譯時鍵入不匹配錯誤:
FILEPATH.Worksheets(TFOCUS).Range(Cells(RFOCUS, B)).Value = Worksheets(3).Range(Cells(RECORD, A)).Value 'copies focus EmpID to destination
我假設這與將TFOCUS用作整數或將FILEPATH用作文件路徑有關。 誰能建議:
在此先感謝您的幫助。
您沒有向我們顯示變量的分配位置/位置,而是...
Public RFOCUS As Integer ' Creates RFOCUS, which is the row in focus Public CFOCUS As String ' Creates CFOCUS, which is the column in focus
嘗試將CFOCUS
聲明為Integer
。 或者更好,作為Long
,以便您的代碼可以在行32767之后使用( Integer
類型是16位且帶符號,因此32768是一個溢出值)。
另外,如果FILEPATH
是String
,那么您的代碼將無法工作:
FILEPATH設置為外部Excel工作簿的路徑。
FILEPATH.Worksheets(TFOCUS)
它應該是一個Workbook
對象。但是您使用的標識符非常混亂。
Dim wb As Workbook
Set wb = Workbooks.Open(FILEPATH)
wb.Worksheets(TFOCUS).Range(Cells(RFOCUS, B)).Value = Worksheets(3).Range(Cells(RECORD, A)).Value 'copies focus EmpID to destination
wb.Worksheets(TFOCUS).Range(Cells(4, CFOCUS)).Value = Worksheets(3).Range(Cells(RECORD, B)).Value 'copies focus Course to destination
wb.Worksheets(TFOCUS).Range(Cells(RFOCUS, CFOCUS)).Value = Worksheets(3).Range(Cells(RECORD, C)).Value 'copies focus Date to destination
CFOCUS = CFOCUS + 1 'moves focus to next column
RECORD = RECORD + 1 'creates next record
'save [wb] workbook? Close it?
Set wb = Nothing
我是否也可以建議將YELLCASE
用作常量,對本地人使用camelCase
並對其他所有內容使用PascalCase
?
如果RFOCUS設置為“ Q”,並且B和A是整數,則此操作:
FILEPATH.Worksheets(TFOCUS).Range(Cells(RFOCUS, B)).Value = Worksheets(3).Range(Cells(RECORD, A)).Value
應該:
FILEPATH.Worksheets(TFOCUS).Range(RFOCUS & B).Value = Worksheets(3).Cells(Record, A).Value
這是所有3行:
FILEPATH.Worksheets(TFOCUS).Range(RFOCUS & B).Value = Worksheets(3).Cells(Record, A).Value
FILEPATH.Worksheets(TFOCUS).Cells(4, CFOCUS).Value = Worksheets(3).Cells(Record, B).Value
FILEPATH.Worksheets(TFOCUS).Range(RFOCUS & CFOCUS).Value = Worksheets(3).Cells(Record, C).Value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.