Почему это только применение формата к столбцу A вместо выбранного столбца J - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь чередовать выравнивание столбца, чтобы сделать чтение немного легче, но даже если я указываю столбец J, он всегда применяет форматирование к столбцу A

Если я создаю новый лист и запускаю егопо сравнению с простым 1 столбцом листа, он работает отлично и, как и ожидалось.Но мне нужно, чтобы он работал со столбцом J

Sub alternateAlignLeft()
    Columns("J:J").Select
    For rowx = 2 To 1000 Step 2
    Cells(rowx, 1).HorizontalAlignment = xlLeft
    Next
End Sub


Sub alternateAlignRight()
    Columns("J:J").Select
    For rowx = 1 To 1000 Step 2
    Cells(rowx, 1).HorizontalAlignment = xlRight
    Next
End Sub

Мне нужен этот код, который прекрасно работает со столбцом A, чтобы он работал только для столбца J. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Как правило, вам следует избегать .Select, как описано здесь .

Попробуйте этот код:

Sub alternateAlignLeft()
For rowx = 2 To 1000 Step 2
    Cells(rowx, "J").HorizontalAlignment = xlLeft
Next
End Sub

Sub alternateAlignRight()
For rowx = 2 To 1000 Step 2
    Cells(rowx, "J").HorizontalAlignment = xlRight
Next
End Sub

Чтобы объяснить: Cells занимает двааргументы: RowIndex и ColumnIndex.Итак, вы выполнили форматирование для столбца 1, который является столбцом A.Выражение .Select, которое было до этого, на самом деле вообще не влияет на эту строку, так как нет ссылки на Selection.

Обратите внимание, что вы также должны квалифицировать все свои Range объекты, например так:

ThisWorkbook.Sheets("Sheet1").Cells(rowx, "J").HorizontalAlignment = xlRight

Это необходимо скорректировать в соответствии с вашим вариантом использования.

0 голосов
/ 27 сентября 2019

Ваш Columns("J:J").Select не имеет никакого эффекта, потому что вы выбираете конкретную ячейку с помощью:

 Cells(rowx, 1).HorizontalAlignment = xlLeft

Cells(rowx, 1) означает ячейку в строке "rowx" в столбце 1 ...который является A.

Если вы хотите, чтобы это было J, вам нужно будет изменить его на 10:

Cells(rowx, 10).HorizontalAlignment = xlLeft

и

 Cells(rowx, 10).HorizontalAlignment = xlRight
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...