Форматирование номера / текста теряется при копировании в VBA - PullRequest
0 голосов
/ 18 октября 2019

опять все! У меня есть следующий фрагмент кода, который берет число с одного листа и просто устанавливает столбец на другом листе точно такой же информации. Я пробовал .value и .value2, но оба из них изменяют форматирование, где он не хранит мои запятые. Таким образом, вместо 123 456 789 он отображается как 123456789. Это должно быть сохранено как CSV, но мне не повезло. И самое странное в том, что он делает это только с несколькими разными, но далеко не большинством из них. Как вы видите, я довольно растерян, это очень просто, но ответ ускользает от меня. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Код

productws.Range("B3:B" & lr).Value2 = translatews.Range("BH3:BH" & lr).Value2

Ответы [ 3 ]

1 голос
/ 18 октября 2019

Передача значения не переносит форматирование. Для этого вы можете использовать Range.Copy.

translatews.Range("BH3:BH" & lr).Copy Destination:=productws.Range("B3)
0 голосов
/ 19 октября 2019

Хорошо, так что ответ в! Я дал вам очень хорошие люди, что я думал, что это проблема, но проблема заключалась в создании самой ценности. Я использовал запятые для объединения различных значений, в результате чего Excel считал его как число (но иногда как текст, если значения в последнем месте были только две цифры против трех). Итак, ответ состоял в том, чтобы изменить мой разделитель на точки с запятой во всех местах, которые имели значение, и теперь он работает как шарм! Я хотел бы опубликовать здесь, но это занимает довольно много кода, поэтому, если не будет запрошено, я оставлю это как ответ. Я прошу прощения за то, что дал «плохой» вопрос, и постараюсь сделать лучше в будущем! Спасибо всем, кто помог, сообщество Stack Overflow всегда пытается помочь!

0 голосов
/ 18 октября 2019

Вы можете использовать функцию Text, чтобы получить значение ячейки, отображаемое на экране (включая форматирование).

productws.Range("B3:B" & lr).Value = translatews.Range("BH3:BH" & lr).Text

Тем не менее, оно звучит как базовыйПроблема заключается в том, что Excel автоматически форматирует запятые в исходных данных и предполагает, что они являются просто числами, а не значениями, разделенными запятыми. Этого можно избежать, установив в качестве формата ячейки исходных данных значение «Текст» вместо «Числовой» (выберите диапазон, щелкните правой кнопкой мыши, «Форматировать ячейки», выберите категорию «Текст»).

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