【问题标题】:Problem setting the range of non continuous range in vba access manipulating excel sheet问题在vba访问操作excel表中设置非连续范围的范围
【发布时间】:2019-10-31 12:30:13
【问题描述】:

我正在从 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

有人可以指出我如何将格式应用于与此类似的非连续范围吗?

【问题讨论】:

  • 你试图用那个“rng”变量做什么操作?某些操作不适用于组合(区域)范围,即 rng.cut 等。因此在这种情况下,您可以按照@mdelapena 的建议执行不同的范围变量
  • 简单的事情:以 rng .Horizo​​ntalAlignment = xlCenter .VerticalAlignment = xlVAlignCenter 结束
  • 你能edit你的问题更多的代码吗?
  • Intersect 在这里可能有用。
  • 我已经在你问 BigBen 的问题中包含了我的代码。

标签: excel vba ms-access


【解决方案1】:

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

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

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

点击here了解更多关于如何使用Range对象的信息。

【讨论】:

  • 谢谢,但这正是我想要避免的。我直接在 Excel 的 VBA 上的电子表格上做了类似的事情,它可以工作,我无法在 Access VBA 中复制它:.Range("B2:B" & MyLastRow - 3 & "," & "D2:D" & MyLastRow - 3 & "," & "H2:H" & MyLastRow - 3 & "," & "I2:I" & MyLastRow - 3).Horizo​​ntalAlignment = xlCenter
  • 我会尽量避免这种情况,它会让人感到困惑。但是,如果您确实需要一次引用多个范围,请尝试使用 Union() 加入范围,如下所示:Set myRanges = Union(rng1, rng2)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多