动态创建范围后期绑定 VBA
Dynamically Create Range Late Binding VBA
尝试使用此动态创建范围:
ws.Range(Cells(1, 1), Cells(q + 1, z + 1)).Value2 = xaRR
这在 excel 中很有用,但访问 vba 总是给我带来问题。它不喜欢细胞部分。烦人的是这并没有让我大惊小怪
ws.Cells(1,1).Value = blah blah blah
当我尝试这个时:
Dim oXL As Object: Dim wb As Object: Dim ws As Object: Dim rNg As Object: Dim cl As Object
Set wb = .Workbooks.Add
Set ws = wb.Sheets
Set rNg = ws.Range
Set cl = rNg.Cells
ws.rNg(cl(1, 1), cl(q + 1, z + 1)).Value2 = xaRR
它说 rNg 不支持这种 属性 或方法。
谁能帮我看看这个明显的问题?
您的原始行使用了对 Activesheet 的隐式引用。在 Excel 中,这是有效的(但如果您不想使用 Activesheet,这是一个错误),但在 Access 中,它将是一个错误。使用 sheet 引用限定 Cells 调用,以进行显式调用:
我假设 ws
是一个 Worksheet
对象而不是 Worksheets
对象
ws.Range(ws.Cells(1, 1), ws.Cells(q + 1, z + 1)).Value2 = xaRR
或者在你的第二个例子中:
我删除了 Cells 变量,并且我还用逗号替换了 : Dim
指令分隔符。指令分隔符是邪恶的。
您的 ws
变量是 all sheets,所以我只抓取了第一个,但您的实现可能需要有所不同。
Dim oXL As Object, wb As Object, ws As Object
Set wb = .Workbooks.Add
Set ws = wb.Sheets(1)
ws.Range(ws.Cells(1, 1), ws.Cells(q + 1, z + 1)).Value2 = xaRR
尝试使用此动态创建范围:
ws.Range(Cells(1, 1), Cells(q + 1, z + 1)).Value2 = xaRR
这在 excel 中很有用,但访问 vba 总是给我带来问题。它不喜欢细胞部分。烦人的是这并没有让我大惊小怪
ws.Cells(1,1).Value = blah blah blah
当我尝试这个时:
Dim oXL As Object: Dim wb As Object: Dim ws As Object: Dim rNg As Object: Dim cl As Object
Set wb = .Workbooks.Add
Set ws = wb.Sheets
Set rNg = ws.Range
Set cl = rNg.Cells
ws.rNg(cl(1, 1), cl(q + 1, z + 1)).Value2 = xaRR
它说 rNg 不支持这种 属性 或方法。
谁能帮我看看这个明显的问题?
您的原始行使用了对 Activesheet 的隐式引用。在 Excel 中,这是有效的(但如果您不想使用 Activesheet,这是一个错误),但在 Access 中,它将是一个错误。使用 sheet 引用限定 Cells 调用,以进行显式调用:
我假设 ws
是一个 Worksheet
对象而不是 Worksheets
对象
ws.Range(ws.Cells(1, 1), ws.Cells(q + 1, z + 1)).Value2 = xaRR
或者在你的第二个例子中:
我删除了 Cells 变量,并且我还用逗号替换了 : Dim
指令分隔符。指令分隔符是邪恶的。
您的 ws
变量是 all sheets,所以我只抓取了第一个,但您的实现可能需要有所不同。
Dim oXL As Object, wb As Object, ws As Object
Set wb = .Workbooks.Add
Set ws = wb.Sheets(1)
ws.Range(ws.Cells(1, 1), ws.Cells(q + 1, z + 1)).Value2 = xaRR