在Excel VBA中使用变量按工作表编号声明工作表
晚上好。我迫切需要一些帮助,我正在写一小段VBA代码在Excel VBA中使用变量按工作表编号声明工作表,excel,vba,variables,integer,worksheet,Excel,Vba,Variables,Integer,Worksheet,晚上好。我迫切需要一些帮助,我正在写一小段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
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:Type Mismatch错误,在下面的一行:
FILEPATH.Worksheets(TFOCUS).Range(Cells(RFOCUS, B)).Value = Worksheets(3).Range(Cells(RECORD, A)).Value 'copies focus EmpID to destination
我假设这与将TFOCUS用作整数或将FILEPATH用作文件路径有关。谁能建议:
- 到底是什么不匹配
- 如果是因为使用了工作表(TFOCUS),我是否可以通过变量按制表符顺序引用工作表的编号
- 还有其他建议吗
提前感谢您的帮助。您没有告诉我们变量分配的位置/是否,但是 尝试将
CFOCUS
声明为整数
。或者更好,作为一个Long
,这样您的代码就可以在第32767行之外工作(Integer
类型是16位且有符号的,所以32768是一个溢出值)
另外,如果文件路径
是字符串
,则代码无法工作:
FILEPATH设置为外部Excel工作簿的路径
它应该是工作簿
对象。。但是您使用的标识符非常混乱
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
谢谢Matts Mug,我已经有几年没有编码了,忘记了很多约定和语法。另外,对于VBA for excel来说,这是相当新的。我将在星期一试一试,并整理出我的变量名!感谢您迄今为止的帮助,祝您复活节周末愉快!经济学家,谢谢你指出——事实上,我把RFOCUS和CFOCUS搞错了——RFOCUS是脚本正在处理的行,CFOCUS是列。因此,当RFOCUS设置为5时,我引用的是单元格5B。当CFOCUS设置为Q时,我引用的是单元格4Q。我将修改我的问题以反映这一点。我应该被称为CFOCUS、B、CFOCUS&B、CFOCUS、“B”还是CFOCUS&B?同样,数字应该是4还是“4”?感谢您迄今为止的帮助,祝您复活节周末愉快!确保引用单元格、列和行(如B5),我认为这将对您有所帮助。因此,如果CFOCUS设置为“Q”,并且您想要单元格Q4,您会说:
CFOCUS=“Q”
和工作表(3).range(CFOCUS&5).value
FILEPATH.Worksheets(TFOCUS).Range(RFOCUS & B).Value = Worksheets(3).Cells(Record, A).Value
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