Я новичок в VBA, поэтому, пожалуйста, простите мою нехватку опыта.Ассоциативные массивы VBA (как индексировать)
Im using excel VBA и пытается выяснить, как индексировать массив. Я импортирую CSV и использую функцию split. Мне нужно получить доступ к каждому отдельному элементу элементов, разбитому на массив (ы). Лучший способ объяснить, что мне нужно, это пример, как это от Actionscript:
var a:Array = [];
a[1] = "Hello";
a[2] = "World";
(Except that what I have is a dynamic array created by the SPLIT function)
Where I could access "Hello" with the var a[1]
Вот то, что я до сих пор:
Sub getTxtfile()
FilePath = Application.GetOpenFilename _
(Title:="Please choose a file to open", _
FileFilter:="CSV Files *.csv* (*.csv*),")
Open FilePath For Input As #1
row_number = 0
Do Until EOF(1)
Line Input #1, LineFromFile
LineItems = Split(LineFromFile, ",")
'ActiveCell.Offset(row_number, 0).Value = LineItems(1)
'ActiveCell.Offset(row_number, 1).Value = LineItems(0)
row_number = row_number + 1
'Debug.Print LineItems(0) & ": " & LineItems(1)
Loop
Close #1
End Sub
теперь у меня есть 2 массивы (LineItems (0) & LineItems (1)), но как мне проиндексировать то, что внутри них на данный момент?
Спасибо за любую помощь, мы будем благодарны.
Майк
CSV-я использую отформатирован для использования с другими приложениями SolidWorks, питона и т.д.), кроме Excel. Мне нужно получить доступ к определенным элементам в массиве для заполнения определенных ячеек. Поскольку это ... Я могу вывести весь массив в столбцы, но я не хочу этого делать, только те, которые мне нужны. Вот образец CSV:
0, 0,200 р, 1,0709 кв, 1,167 г, 1,177 с, 1,216 т, 1,570 и, 1,5843 V, 1,6883 ш, 1,9079 е , .2645
То, что я хочу сделать, это ссылка на букву в первом элементе и добавление второго элемента в определенную ячейку: ссылку «t» на индекс и вставить «1.570».
Элементы в моих массивах - это LineItems (0) и LineItems (1). Поэтому в идеале я хочу ссылаться на каждый индексированный элемент в элементе как LineItems (1) (a)/LineItems (1-a) или что-то подобное этому.
У вас уже есть массив с 2 ст. Чтобы увидеть, что внутри, вы можете сделать что-то вроде Debug.Print LineItems (0) для первого элемента или (1) для второго. Вы можете перебирать элементы с помощью цикла For, например: 'Для i = LBound (LineItems) для UBound (LineItems)' –
У вас нет 2 массивов - у вас есть * один * массив с двумя * элементами *. – Comintern
В VBA нет ассоциативных массивов ... Все индексы численные. – salih0vicX