2

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

То, как я это делаю, сводится к:

Dim line_data(0 to 1) As String
line_data(0) = SheetNameVar.Cells(7, "C").Value
line_data(1) = SheetNameVar.Cells(8, "C").Value

Dim line As String
line = Join(line_data, ",")

TextStreamNameVar.WriteLine line

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

3.77265350125136E-03,0.169769407556311

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

Я не могу найти какую-либо информацию, говорящую о Excel VBA, преобразующей нотацию значения при записи в текстовый поток. Есть ли способ предотвратить это? В идеале это не должно зависеть от форматирования листа, поэтому я могу отображать там меньшую точность для удобства чтения. Но мне нужно, чтобы значения отображались в моем текстовом файле следующим образом:

.00377265350125136,0.169769407556311

Заранее благодарю за любую помощь!

1 ответ1

0

Изменение формата на листе Excel здесь ни на что не повлияет, потому что вы извлекаете только данные и помещаете их в переменные.

Вы можете заставить значения отображаться без научной нотации, используя строку произвольного формата, например так:

line_data(0) = Format(Sheets(1).Cells(7, "C").Value, "0.##############################")
line_data(1) = Format(Sheets(1).Cells(8, "C").Value, "0.##############################")

Вам нужно как минимум столько # сколько вы хотите отображать для символов. Отформатированный таким образом позволит более коротким числам отображаться как их фактическая длина, но если вы введете меньше # чем у вас в числе, оставшиеся места будут обрезаны. Если вы хотите, чтобы все числа были одинаковой длины, вы можете использовать 0 вместо # и оно будет дополнять более короткие числа нулями. Аналогично, если вы не хотите, чтобы перед 0 был десятичный знак, замените его на # .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .