您好我已经动态更改了列号。我需要使用该列号选择2个单元格。因为我不能使用单元格命令来选择多个单元格而我不能使用Range,因为我不知道关于字母的列,请帮我找到相同的解决方案。
提前致谢
例如我的代码是:
Dim Row_num as integer
for x=1 to 100
Thisworkbook.Sheets("Sheet1").range((Row_num,x),(Row_num,x+1)).select
selection.merge
next
答案 0 :(得分:2)
正确用法是:
<WorkBook>.<WorkSheet>.Range(<CornerCell>, <OpositeCornerCell>)
您的代码片段中还有其他几个问题。请参阅此代码中的注释
Dim Row_num as Long ' Use Long as there may be more than 32767 rows, and its faster
Dim x as Long ' Dim all your variables
With Thisworkbook.Worksheets("Sheet1") ' Use With so you can refer to this part repeatedly
For x = 1 to 100 Step 2 ' Maybe you meant every second cell, otherwise ranges will overlap
' Refer to two corners of the required Range
' Don't use Select
Range(.Cells(Row_num, x), .Cells(Row_num, x + 1)).Merge
Next
End With
答案 1 :(得分:1)
除了克里斯的优秀答案之外,我还要添加Range
对象的两个小但非常有用的方法:.Offset
和.Resize
:
使用Range.Offset
,您可以“移动”一个单元格,即Range("A1").Offset(3, 2)
将导致B3
。 .Resize
将按照名称说明,调整范围,即Range("A1").Resize(3, 2)
将导致A1:B3
。
两个元素可以组合,例如Range("A1").Offset(1, 1).Resize(3, 2)
会产生B2:C4
。
在您的情况下,您可以使用:
Option Explicit 'always use Option Explicit, as it forces you to declare variables
Sub MergeFields
Dim lngRow As Long
Dim rngTopLeft As Range
Set rngTopLeft = Thisworkbook.Worksheets("Sheet1").Range("A1") 'change A1 accordingly!
For lngRow = 1 To 100
rngTopLeft.Offset(lngRow).Resize(1, 2).Merge
Next lngRow
End Sub