excel - 从列引用中添加/减去长变量
问题描述
我之前在这里看到了一个帖子,它让我想起了我每隔一段时间就会遇到的一个(非常基本的)问题。我不知道什么是好的标题,我很确定我的不是。
无论如何,假设我得到一个整数列(假设它是 4),将其保存在一个变量中,然后想在 E1 左右各 4 列的列中写入“Test”(意思是 A1和 I1)。我可以在两行代码中使用Offset
或Cells
. 但是我怎样才能在一行中做到这一点?
Sub Test()
Dim ws As Worksheet
Dim colnumber As Long
Set ws = ThisWorkbook.Sheets(1)
colnumber = 4
ws.Range("E1").Offset(0, colnumber).Value = "Test"
ws.Range("E1").Offset(0, -colnumber).Value = "Test" 'works
ws.Cells(2, 5 + colnumber).Value = "Test2"
ws.Cells(2, 5 - colnumber).Value = "Test2" 'works
ws.Range("A3,I3").Value = "Test3" 'works
ws.Range(ws.Cells(4, 5 - colnumber), ws.Cells(4, 5 + colnumber)).Value = "Test4" 'fills up Range("A4:I4")
End Sub
'ws.Range("A3,I3").Value' 只是为了让我表明可以在一行代码中在两个不连续的单元格中编写相同的内容。我挣扎的是在使用Cells
或类似的东西时这样做(我认为我必须这样做,因为我想添加/减去变量colnumber
)并且在最后一行代码中它当然会填满从A4
to的整个范围I4
,即不是我想要的,我只想填满这两个单细胞。
解决方案
使用 Union,Range 使用两个单元格作为开始和结束:
Union(ws.Cells(2, 5 + colnumber),ws.Cells(2, 5 - colnumber)).Value = "Test4"
如果要使用 Range,请创建与以下内容连接的地址字符串,
:
ws.Range(ws.Cells(4, 5 - colnumber).Address(0,0) & "," & ws.Cells(4, 5 + colnumber).Address(0,0)).Value = "Test4"
但这是很多打字。
推荐阅读
- nix - `nix-darwin` 提供了什么?
- html - 在引导程序中打印时隐藏表格边框?
- scala - Scala - value < 不是 AnyVal 的成员
- python - cv2.imread always returns NoneType python 3.6
- python - 列表到 Pandas 数据框的 Python 字典
- office365 - 允许用户在没有删除用户权限的情况下将电子邮件帐户添加到 office365
- openedge - 使用 Progress Openedge 进行应用服务器调用时引发 XID 错误
- ruby-on-rails - 跨模型共享属性枚举
- java - Java 可选映射和过滤器未按预期工作
- html - 为什么 div 为图像占用额外空间?