Excel автоматически меняет формат даты даже после исправления - PullRequest
0 голосов
/ 07 июня 2018

Я помогаю обновлять чужой код VBA, так как он был переведен в другой проект.Код считывает данные из входного листа, затем отображает 4 формы результатов, заполняет их, сохраняет их в виде файла CSV, а затем снова отображает их.

Проблема : одна из записей данных - это числа, отформатированные как ## - #, например, 20-2, 13-5 и 12-1.12-1 это проблема.Excel видит это и читает его как формат даты и печатает 1-Dec в моем листе результатов.

Решения, которые я пробовал : я пытался остановить программу, прежде чем она будет скрывать данные и изменятьформат, но он сбрасывает числа.И потом я тоже не могу сохранить его, потому что программа запустилась на полпути, и я не хочу сохранять документ таким образом.Затем я попытался отобразить листы в конце после запуска и очистки программы, но без полного удаления данных после запуска программы, она не будет работать правильно, когда вы попытаетесь запустить ее во второй раз.Наконец, я попытался отобразить, прежде чем программа даже запустилась, и изменил настройку формата с «Общие» на «Текст», но даже после сохранения и закрытия не похоже, что это оказало влияние.

МойВопрос : Прежде всего я правильно меняю формат?А во-вторых, кто-нибудь знает, как бороться с Excel, автоматически форматируя таким образом.Я работал в VBA около 3 недель и сталкивался с этим только один раз, но это легко исправить.Этот, похоже, не следует этому шаблону.

1 Ответ

0 голосов
/ 07 июня 2018

Поскольку мне дали ответ, я подумал, что теперь я проведу свой первый вопрос и ответ сам, для тех, кто может столкнуться с этим в будущем.Благодарим тех пользователей в комментариях выше, что помогли мне разобраться в этом.Строка кода, подобная этой:

Dim variable1 As Variant
variable1 = Sheets("Sheet 1").Range("A1").Value
Sheets("Sheet 2").Range("A1").NumberFormat = "@"
Sheets("Sheet 2").Range("A1") = variable1

Или с опцией ячеек, мы увидим код, подобный этому:

Dim variable1 As Variant
variable1 = Sheets("Sheet 1").Cells(1,1).Value
Sheets("Sheet 2").Cells(1,1).NumberFormat = "@"
Sheets("Sheet 2").Cells(1,1) = variable1

Оба эти кода измеряют переменную для хранения ячейки A1 виз листа 1, обратитесь к листу 2 и установите эту ячейку в новый формат (сделав ее форматом числа, а не автоматического форматирования), затем последняя строка устанавливает эту вновь отформатированную ячейку равной значению в переменной, но при сохраненииновый формат, который мы установили.

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