将值分配给具有可变列重发性的范围

时间:2018-10-12 12:56:20

标签: vba

以下代码给了我一个编译错误:预期:分隔符或)。

   Public Sub test1()
        Dim first_column As String,a_tab as string
        a_tab="Sheet1"
        first_column = "A"
        ThisWorkbook.Sheets(a_tab).Range(first_column&"10").value="hello"
    End Sub

我知道我们可以在行引用是变量(即

)时做到这一点
Public Sub test1()
    dim fist_row as integer, a_tab as string
    a_tab="Sheet1"
    first_row=10
    ThisWorkbook.Sheets(a_tab).Range("A"&first_row).value="hello"
End Sub

有人可以帮忙吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

摆脱使用字母表示列的习惯。

您的第一列是第1列:
Columns(1).Value = "Hello"将在第1列-Range(A1:A1048576)的每个单元格中放置“ Hello”。

第1列中的第二个单元格:
Cells(2, 1) = "Hello"将在第2行第1列-Range(A2)中放置“ Hello”。

以开始和结束单元格指定的单元格范围:
Range(Cells(2, 1), Cells(4, 2)) = "Hello"将在第2行第1列和第4行第2列之间的每个单元格中放置“ Hello”-Range("A2:B4")

第一,第二,第三和第四列:
Range(Cells(1,1),Cells(1,4)).EntireColumn-Range("A:D")

但是,说导致代码失败的唯一原因就是间距。您会注意到,使用row变量时,它会一直放回空格-似乎不会使用column变量:
ThisWorkbook.Sheets(a_tab).Range(first_column & "10").Value = "hello"
-在“&”号的两侧添加一个空格。

修改:
考虑使用循环将值放置在CB:CL列中。使用您要写的数字:

Sub Test()

    Dim x As Long

    For x = 80 To 90
        Cells(1, x) = "Hello"
    Next x

End Sub  

使用字母,您必须使用类似以下内容:

Sub Test()

    Dim col_Letter As String

    col_Letter = "CB"

    Do
        Range(col_Letter & "10") = "Hello"
        'Get the next column letter by finding the address, splitting it and extracting just the column letter.
        col_Letter = Split(Range(col_Letter & "10").Offset(, 1).Address(True, False), "$")(0)
    Loop While col_Letter <> "CL"

End Sub

答案 1 :(得分:0)

将自变量中的字符串连接到Range时是否缺少空格? ThisWorkbook.Sheets(a_tab).Range(first_column & "10").value="hello"对我有用,如果我添加空格。