Присвойте значение диапазону с переменной refreence - PullRequest
0 голосов
/ 12 октября 2018

Следующий код дает мне ошибку компиляции: ожидается: разделитель или).

   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 голосов
/ 12 октября 2018

Вам не хватает пробелов при объединении строк в вашем аргументе Range?ThisWorkbook.Sheets(a_tab).Range(first_column & "10").value="hello" У меня работает, если я добавлю пробелы.

0 голосов
/ 12 октября 2018

Выйдите из привычки использовать букву для обозначения столбца.

Ваш первый столбец - это столбец 1:
Columns(1).Value = "Hello" поместит «Hello» в каждую ячейку столбца 1 - Range(A1:A1048576).

Вторая ячейка в столбце 1:
Cells(2, 1) = "Hello" поместит «Hello» в строке 2, столбец 1 - Range(A2).

Диапазон ячеек, обозначенных началом иконечная ячейка:
Range(Cells(2, 1), Cells(4, 2)) = "Hello" поместит «Hello» в каждую ячейку между строкой 2, столбцом 1 и строкой 4, столбцом 2 - Range("A2:B4")

Первый, второй, третий и четвертый столбцы:
Range(Cells(1,1),Cells(1,4)).EntireColumn - Range("A:D").

Но, сказав, что единственная причина, по которой ваш код дал сбой, - это пробелы.Вы заметите, что с переменной строки, в которую он продолжает вставлять пробелы, - похоже, не с переменной столбца:
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...