Workbook.Worksheets.Columns () с числами вместо строки? - PullRequest
0 голосов
/ 10 октября 2018

В настоящее время я могу сделать одну из двух вещей.

Я могу либо использовать строку, показывающую, на какие столбцы я хочу изменить ширину, или я могу использовать столбец номер один по одному за раз, например:

Это прекрасно работает как строка.

re_wb.Worksheets(1).Columns("K:J").ColumnWidth = 23

Проблема в том, что мне нужно динамически найти последний столбец, а затем добавить еще два столбца на лист.Это достигается путем нахождения последнего столбца и последующего добавления значения в 1-ю ячейку для заголовка, используя +1 и +2 для номера последнего столбца.

last_col = re_wb.Worksheets(1).Cells(1, re_wb.Worksheets(1).Columns.Count).End(xlToLeft).Column
re_wb.Worksheets(1).Cells(1, last_col + 1).Value = "Correct Per CL"
re_wb.Worksheets(1).Cells(1, last_col + 2).Value = "Is reassignment needed?"

Для двух столбцов это не таксложно написать две строки с последним номером столбца +1 и +2 соответственно, чтобы отредактировать их ширину, но, учитывая диапазон столбцов, можно работать со строкой, возможно ли использовать два набора чисел?(Или больше чисел в зависимости от того, сколько столбцов мне нужно отредактировать одновременно.)

re_wb.Worksheets(1).Columns(last_col + 1).ColumnWidth = 23
re_wb.Worksheets(1).Columns(last_col + 2).ColumnWidth = 23

Я пробовал что-то вроде этого:

re_wb.Worksheets(1).Columns(last_col + 1, last_col + 2).ColumnWidth = 23

Без удачи.Видя, что я не могу предсказать, какой буквой будет столбец, можно ли определить диапазон столбцов с помощью чисел или мне просто нужно будет делать по одному за раз, как у меня уже было выше?

Ответы [ 5 ]

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

У вас здесь есть несколько отличных примеров - лично я предпочитаю использовать функцию, которая преобразует число в букву столбца - таким образом, мне не нужно слишком сильно менять синтаксис:

Function ColLetter(colnum As Long)

    ColLetter = Split(Cells(1, colnum).Address, "$")(1)

End Function

Использование в вашем примере:

re_wb.Worksheets(1).Columns(ColLetter(last_col + 1) & ":" & ColLetter(last_col + 2)).ColumnWidth = 23
0 голосов
/ 10 октября 2018
Range(Cells(1, 1), Cells(1, 3)).EntireColumn.ColumnWidth = 15

Очевидно, вы захотите определить, к какому листу вы обращаетесь, а не просто к диапазону или ячейкам

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

Range и FullColumn ваши друзья здесь:

re_wb.Worksheets(1).Range(Cells(1,last_col + 1),Cells(1,last_col + 10)).entirecolumn.ColumnWidth = 23
0 голосов
/ 10 октября 2018

В объектной модели Excel нет такой вещи, как «Столбец» - Worksheet.Columns(foo) возвращает Range.Просто создайте соответствующий Range и используйте его для установки ширины столбца:

With re_wb.Worksheets(1)
    .Range(.Cells(1, last_col + 1), .Cells(1, last_col + 2)).ColumnWidth = 23
End With
0 голосов
/ 10 октября 2018

Если вам известен первый и последний столбец, для которого вы хотите изменить ширину, вы можете преобразовать числа в буквы (см. Этот сайт: Число в букву ), а затем преобразовать весь диапазон.

Вот пример этого метода:

Dim start_column As String, end_column As String
Dim last_col As Integer
last_col = re_wb.Worksheets(1).Cells(1, re_wb.Worksheets(1).Columns.Count).End(xlToLeft).Column

start_column = Split(Cells(1, last_col + 1).Address, "$")(1)
end_column = Split(Cells(1, last_col + 2).Address, "$")(1)
re_wb.Worksheets(1).Columns(start_column & ":" & end_column).ColumnWidth = 23
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...