Я сейчас работаю с VBA, к которой я не привык. Я делаю сценарий, который читает некоторые данные из txt-файлов, а затем делает из них график. Скрипт читает txt-файлы, собирает данные и вводит их в рабочую книгу excel. Затем составляет графики этих значений.
Предполагается, что одно значение умножается на коэффициент десять. Однако, читая значения и пытаясь преобразовать их в двойные, я сталкиваюсь с множеством проблем.
Вот как выглядит файл. И второй столбец - это то, что здесь интересно.
444.267 70.26 332.562 0.692 2 1 0 157.48
444.933 70.26 342.562 0.692 2 1 0 157.48
446.533 72.88 342.562 0.692 2 1 0 157.48
462.933 75.5 342.562 0.692 2 1 0 157.48
468.667 75.5 331.75 0.692 2 1 0 157.48
479.333 75.5 331.75 0.692 2 12 0 157.48
479.733 75.5 331.75 0.692 2 11 0 157.48
480.133 75.5 331.75 0.692 2 1 0 157.48
539.467 75.5 331.75 0.692 2 12 0 157.48
Ниже я приложил код. Я несколько изменил его для целей отладки.
For tmp1 = 1 To 70
'While Not EOF(FileNum)
Dim DataLine_Array() As String
Line Input #FileNum, DataLine
DataLine_Array = Split(DataLine, vbTab)
Cells(i, 1) = DataLine_Array(0)
Cells(i, 2) = DataLine_Array(1)
Cells(i, 3) = DataLine_Array(2)
Cells(i, 4) = DataLine_Array(3)
Cells(i, 5) = DataLine_Array(4)
Cells(i, 6) = DataLine_Array(5)
Cells(i, 7) = DataLine_Array(6)
Cells(i, 8) = DataLine_Array(7)
On Error GoTo ErrLabel:
Dim Tmp_Double As Double
Tmp_Double = DataLine_Array(3)
Cells(i, 10) = (Tmp_Double)
'Here it goes wrong
Cells(i, 9) = DataLine_Array(1) / 10
Dim Test_test As String
Dim test_test2 As Double
Test_test = DataLine_Array(1) / 10
test_test2 = DataLine_Array(1)
'Output
Debug.Print 'start'
Debug.Print DataLine_Array(1)
Debug.Print Test_test
Debug.Print VarType(Test_test)
Debug.Print test_test2
Debug.Print VarType(test_test2)
ErrLabel:
Resume Next
i = i + 1
Next tmp1
И это то, что выводится.
70.26
702,6
8
7026
5
72.88
728,8
8
7288
5
75.5
75,5
8
755
5
75.5
75,5
8
755
5
Как вы можете видеть, вывод выводится правильно, если просто печатать строку, вывод выводится правильно.
Однако при сохранении в виде строки точка меняется на запятую и меняет место в зависимости от количества десятичных знаков. Я нахожусь в европейской стране, где в качестве десятичного разделителя вместо запятой используется запятая. Но это не должно влиять на мои мысли.
При попытке сохранить значение как двойное, десятичные дроби полностью исчезают.
Цель - прочитать второй столбец файла как есть и умножить его на десять. Однако это сложно, если я не читаю значения единообразно.
Заранее спасибо!