Ответ 1
Вы можете изменить размер следующим образом:
For n = 1 To 5
Columns(n).Resize(, 5).Select
'~~> rest of your code
Next
В любом диапазоне, который вы делаете, всегда сохраняйте в своем сознании свойство Resize and Offset.
Я ищу альтернативу этому code
, но используя числа.
Я хочу выбрать 5 столбцов, начальный столбец - это переменная, а затем выбирает из этого 5 столбцов.
Columns("A:E").Select
Как использовать integers
вместо ссылки на столбцы? Что-то вроде ниже?
For n = 1 to 5
Columns("n : n + 4") .select
do sth
next n
Спасибо. Gemmo
Вы можете изменить размер следующим образом:
For n = 1 To 5
Columns(n).Resize(, 5).Select
'~~> rest of your code
Next
В любом диапазоне, который вы делаете, всегда сохраняйте в своем сознании свойство Resize and Offset.
Columns("A:E").Select
Может быть заменен на
Columns(1).Resize(, 5).EntireColumn.Select
Где 1 можно заменить переменной
n = 5
Columns(n).Resize(, n+4).EntireColumn.Select
По-моему, вам лучше всего иметь дело с блоком столбцов, а не с циклом от столбцов n до n + 4, поскольку он более эффективен.
Кроме того, использование select приведет к замедлению вашего кода. Поэтому вместо того, чтобы выбирать столбцы, а затем выполнять действие над выбором, попробуйте вместо этого выполнить действие напрямую. Ниже приведен пример изменения цвета столбцов A-E на желтый.
Columns(1).Resize(, 5).EntireColumn.Interior.Color = 65535
вы можете использовать range
с cells
, чтобы получить желаемый эффект (но лучше не использовать select, если вам не нужно)
For n = 1 to 5
range(cells(1,n).entirecolumn,cells(1,n+4).entirecolumn).Select
do sth
next n
Попробуйте использовать следующее, где n
- ваша переменная, а x - ваше смещение (в этом случае 4):
LEFT(ADDRESS(1,n+x,4),1)
Это вернет письмо этого столбца (так что для n = 1 и x = 4 оно вернет A + 4 = E). Затем вы можете использовать INDIRECT()
для ссылки на это:
COLUMNS(INDIRECT(LEFT(ADDRESS(1,n,4),1)&":"&LEFT(ADDRESS(1,n+x,4),1)))
который при n = 1, x = 4 становится:
COLUMNS(INDIRECT("A"&":"&"E"))
и так:
COLUMNS(A:E)
Вы можете указать адреса как "R1C2" вместо "B2". В разделе Файл → Параметры → Формы → Работа с формулами есть стиль ссылки R1C1. который можно установить, как показано ниже.
В приведенном ниже примере кода я использую переменные, чтобы показать, как команда может использоваться для других ситуаций.
FirstCol = 1
LastCol = FirstCol + 5
Range(Columns(FirstCol), Columns(LastCol)).Select
нет необходимости в циклах или таких.. попробуйте это.
dim startColumnas integer
dim endColumn as integer
startColumn = 7
endColumn = 24
Range(Cells(, startColumn), Cells(, endColumn)).ColumnWidth = 3.8 ' <~~ whatever width you want to set..*
Таким образом, вы можете начать выбирать данные даже за столбцом "Z" и выбирать много столбцов.
Sub SelectColumNums()
Dim xCol1 As Integer, xNumOfCols as integer
xCol1 = 26
xNumOfCols = 17
Range(Columns(xCol1), Columns(xCol1 + xNumOfCols)).Select
End Sub