首页 > 解决方案 > 问题在vba访问操作excel表中设置非连续范围的范围

问题描述

我正在从 Access 创建一个 Excel 工作表,我需要从 Access VBA 格式化工作表,但是当我尝试这段代码时,它返回错误 1004:

Set rng = .Range("A2:E" & LastRow & "," & "J2:M" & LastRow)
With rng
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlVAlignCenter
End With

如果我对每个范围都尝试它,它会起作用:

Set rng = .Range("A2:A" & LastRow)

我在 Excel 电子表格上有同样的一段代码,它就像一个魅力,但也许从 Access 我应该使用另一种语法:

With DestWB.Sheets(strSheetName)
  .Range("B2:B" & MyLastRow - 3 & "," & "D2:D" & MyLastRow - 3 & "," & "H2:H" & MyLastRow - 3 & "," & "I2:I" & MyLastRow - 3).HorizontalAlignment = xlCenter
End With

有人能指出我如何将格式应用于类似于这个的非连续范围吗?

标签: excelvbams-access

解决方案


好吧,那是因为您将 2 个范围分配给一个范围。您可以将 2 个单元格对象作为参数或单个字符串(就像在您的工作示例中一样)。

我不知道您要做什么,但我建议将这 2Ranges到 2 个不同的变量分配,然后分别使用这些变量。

Set rng1 = .Range("A2:E" & LastRow)
Set rng2 = .Range("J2:M" & LastRow)

单击此处了解有关如何使用该Range对象的更多信息。


推荐阅读