Как добавить проверку данных из диапазона с числовыми столбцами VBA - PullRequest
0 голосов
/ 13 марта 2019

Я хочу добавить «проверку данных», включая раскрывающееся меню, в некоторые ячейки рабочей книги, в которой используются числовые столбцы. Мне удалось сделать это только с помощью алфавитных столбцов.

Когда я выполняю следующий код, я получаю сообщение об ошибке «1004», и макрос останавливается на строке с формулой 1 (настройки Excel для числовых столбцов):

Sub foo_numeric()
  Dim rngTest As Range 'Range where the Data validation should be applied
  Dim wsTest As Worksheet

  Set wsTest = Worksheets("WorkSheetName")
  Set rngTest = wsTest.Range(wsTest.Cells(1, 2), wsTest.Cells(5, 2))

  With rngTest.Validation
    .Delete
    .Add Type:=xlValidateList, _
       Formula1:="=WorkSheetName!Z1S1:Z22S1"
  End With
End Sub

Когда я переключаю настройки на алфавитные столбцы и выполняю следующий код, я не получаю сообщение об ошибке, и макрос работает гладко:

Sub foo_alphabetical()
    Dim rngTest As Range 'Range where the Data validation should be applied
    Dim wsTest As Worksheet

    Set wsTest = Worksheets("WorkSheetName")
    Set rngTest = wsTest.Range("B1:B5")

    With rngTest.Validation
     .Delete
     .Add Type:=xlValidateList, _
         Formula1:="=WorkSheetName!$A$1:$A$22"
    End With    
End Sub

Есть ли какая-то ошибка в моем коде, которую я пропустил? Как я могу использовать проверку данных с числовыми столбцами?

Примечание: Поместить строку с возможными параметрами в Formula1 не вариант, так как строка будет слишком большой.

1 Ответ

0 голосов
/ 13 марта 2019

Благодаря вопросам @BruceWayne я смог решить свою проблему.

Решение:

Заменить

Formula1:="=WorkSheetName!Z1S1:Z22S1"

с

Formula1:="=WorkSheetName!R1C1:R22C1"

Источник моей проблемы:

Мой офисный пакет написан на немецком языке, поэтому, когда я ссылаюсь на строки и столбцы в Excel, я ссылаюсь на Z eilen и S palten. Вот что означает Z1S1: Z2S51. Изменив мой офисный пакет на английский, я понял, как правильно ссылаться на числовые столбцы.

Примечание : Range.Adress всегда возвращает мне алфавитные столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...