VBA съедает мои нули ВНУТРИ строки?

#string #vba #zero

#строка #vba #ноль

Вопрос:

Итак, вот проблема, с которой я никогда раньше не сталкивался. Я импортирую ISIN (например, DE0002635307) из ячейки, которая определяется как текст. Мне нужно использовать это для ссылки на ячейку с таким именем. Итак:

 sub ISINWriter

dim ISIN as String

ISIN = ThisWorkbook.Sheets(i).Cells(j, 4).Value()

ThisWorkbook.Sheets(i 1).Cells(f, 4).Formula = "=" amp; ISIN

End Sub
  

Для большинства ISIN это работает нормально, за исключением случаев, когда в строке 4 или более нулей. Если это произойдет — например, FR0000120073 — он записывает «= FR120073» в ячейку. Он просто съедает нули ВНУТРИ строки! Есть идеи?

Я использую Excel 2010 и Windows 7.

Большое спасибо.

Ответ №1:

Если вы используете диспетчер имен, чтобы попытаться создать именованный диапазон (или, точнее, именованную формулу) с именем «FR0000120073», то вы должны обнаружить, что получаете сообщение об ошибке. Что-то вроде (из Excel 2007 на моей машине):

 The name that you entered is not valid.
Reasons for this can include:
- The name does not begin with a letter or an underscore
- The name contains a space or other invalid characters
- The name conflicts with an Excel built-in name or the name of another object in the workbook
  

Ключ к разгадке находится в последней части третьей причины. FR120073 является допустимым адресом ячейки в наши дни для листов размером 16Кх1м.

Однако первая причина, приведенная выше, может быть полезной: _FR0000120073 это допустимое имя. Не могли бы вы это использовать?

Комментарии:

1. @JakobEltz — должно быть хорошо, пока Excel не будет поддерживать столбцы 100m (я думаю, что ISINFR будет где-то около столбца 11500000000)

Ответ №2:

РЕДАКТИРОВАТЬ: удаление моего последнего ответа, чтобы это имело смысл.

В основном ваши ссылки на ячейки представляют собой буквенно-цифровое значение. Возьмем, к примеру, A1 — столбец, 1 — строка. Эта проблема возникает из-за того, что 0001 совпадает с 1. таким образом, ссылка на ячейку A001 будет такой же, как и в ячейке A1.

Похоже, что в Excel есть некоторые встроенные функции для удаления начальных нулей из ваших ссылок на ячейки.

Комментарии:

1. Я не совсем уверен, что вы имеете в виду. Мне нужно, чтобы в ячейке была ссылка на ячейку с именем FR00001234. Я не хочу, чтобы внутри ячейки было указано FR00001234.

2. @JakobEltz да, я только что понял это после публикации. Ячейки Excel начинаются с 1, поэтому ссылка на ячейку FR00001 будет той же ячейкой, что и FR1

3. Спасибо, это все-таки помогло мне. Я только что понял, что Excel на самом деле не разрешает имена ячеек, в которых содержится более трех нулей… АХ!!!!

4. @JakobEltz Я обновил свой ответ, чтобы на самом деле ответить на ваш вопрос, лол, рад, что помог.