EXCEL VBA跨表取数 正确语法应该怎么写?

请求大神鼎力相助!从表2的A1单元格取数至表1的A1单元格时需要判断表2的A2单元格中字符是否等于“余额”,如果表2的A2单元格字符=“余额”,则表2的A1单元格字符复制到表1的A1单元格,否则在表1的A1单元格中显示“ERROR”。现在提示语法错误,请问大神应该怎么修改。

Sub 余额()
If Workbooks("余额.xlsx").Sheets("页面1_1").Range("a2").Value = "余额" Then
Range("a1").Value = Workbooks("余额.xlsx").Sheets("页面1_1").Range("a1").Value
Else
Range("a1").Value = "ERROR"
End If
End Sub
如两表同"余额.xlsx"文件内可简写
Sub 余额2()
If Sheets("页面1_1").Range("a2").Value = "余额" Then
Range("a1").Value = Sheets("页面1_1").Range("a1").Value
Else
Range("a1").Value = "ERROR"
End If
End Sub追问

大神,如何解决下标越界的问题 ̄□ ̄||

追答

以上面所有工作簿文件打开可以了

追问

是的,我试过了,但是我想不用打开数据源工作簿,这样太浪费时间,数据源表很多,麻烦您再指点一下。

追答

把上面代码复出来,我帮你改下,以上“余额.xlsx”和 “一支三农.xlsx”都不需要打开是吗

追问

Sub 余额()
If Workbooks("余额.xlsx").Sheets("页面1_1").Range("A6").Value = "西宁市" Then
Range("B3").Value = Workbooks("余额.xlsx").Sheets("页面1_1").Range("O6").Value
Else
Range("B3").Value = "机构对应错误"
End If
End Sub
感谢

追答

以上“余额.xlsx“不打开引有数据
Sub 余额()
Dim wb As Workbook, st As Worksheet, m As String
m = "F:\临用\余额.xlsx" '文件路径自改更改,如果是代码同一个文件夹可以用 m = ThisWorkbook.Path & "\余额.xlsx"
Set wb = GetObject(m)
Set wt = wb.Sheets("页面1_1")
If wt.Range("A6").Value = "西宁市" Then
Range("B3").Value = wt.Range("O6").Value
Else
Range("B3").Value = "机构对应错误"
End If
wb.Close False
Set wb = Nothing
Set wt = Nothing
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-27
VBA中单元格表示方法:
workbook.sheet1.range("a1")

workbook.sheet1.cells(1,1)
第一个点号前是工作簿名,接着是工作表名。本回答被网友采纳
第2个回答  2020-04-26
按照range的写法来,cells也行。