Заменить Const на диалоговое окно для обновления диапазона? - PullRequest
0 голосов
/ 08 марта 2019

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

Как я могу изменить это:

Private Const numCols As Long = 76

сделать columns.count?

например: если есть 76 столбцов, но во второй строке есть данные до 50 столбцов, он возьмет эту строку и транспонирует ее без этих пустых ячеек из столбцов 51-76, смещая мои данные и возвращая значения FALSE, когда Я подтверждаю. Теперь я должен обновить эту переменную long, чтобы убедиться, что она не обрезает завершающие пробелы при изменении моего набора данных.

Что я могу сделать, чтобы сделать его более динамичным, а также убедиться, что скрипт не игнорирует пробелы, когда они мне тоже нужны?

1 Ответ

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

Если ваш заголовок определяет, сколько столбцов, то вы можете посчитать эту строку, чтобы получить число.Предположим, что ваш заголовок находится в строке 1.

Dim numCols as Long
numCols = Application.WorksheetFunction.Counta(sheet1.rows(1))

Вы также можете получить его от пользователя

numCols = Application.InputBox("Enter # of columns")

Если вы используете количество столбцов в нескольких процедурах, вы можетелибо передайте его в качестве аргумента, либо используйте переменную уровня модуля.Объявите переменную уровня модуля в верхней части модуля (в разделе объявлений, перед любыми операторами Sub или Function), например

Private numCols As Long

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

Вы можете сделать то же самое со ссылкой на лист.Я использовал кодовое имя листа (имя, которое пользователь не может видеть и не может изменить), но вы можете создать переменную для ссылки на лист

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("MySheet")

Обычно я использую кодовое имя, а непеременная, но это личное предпочтение.

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