[英]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.