Выйдите из привычки использовать букву для обозначения столбца.
Ваш первый столбец - это столбец 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