У меня есть этот VBA, который преобразует ячейки в JSON:
' Convert JSON
Public Sub exceltojson()
Dim rng As Range, items As New Collection, myitem As New Dictionary, i As Integer, cell As Variant
Set rng = Range("A2")
i = 0
For Each cell In rng
Debug.Print (cell.Value)
myitem("name") = cell.Value
myitem("email") = cell.Offset(0, 1).Value
myitem("phone") = cell.Offset(0, 2).Value
items.Add myitem
Set myitem = Nothing
i = i + 1
Next
Sheets(2).Range("A1").Value = ConvertToJson(items, Whitespace:=2)
End Sub
Это работает нормально, но без углубления в остальную часть кода, я пытаюсь сделать это зациклить, чтобы он шел вниз на одну строкув то время как там есть контент. Например, сначала он будет выполнять A2, затем A3, но если на A4 нет содержимого, он остановится перед выполнением кода на A4.
Я думаю, что у меня есть код для работы при цикле:
Dim sh As Worksheet
Dim rw As Range
Dim RowCount As Integer
RowCount = 0
Set sh = ActiveSheet
For Each rw In sh.Rows
If sh.Cells(rw.Row, 1).Value = "" Then
Exit For
End If
RowCount = RowCount + 1
Next rw
MsgBox (RowCount)
Я не уверен, как все это собрать. Я думал о том, чтобы цикл вызывал другую функцию следующим образом:
Dim sh As Worksheet
Dim rw As Range
Dim RowCount As Integer
RowCount = 0
Set sh = ActiveSheet
For Each rw In sh.Rows
If sh.Cells(rw.Row, 1).Value = "" Then
Exit For
End If
RowCount = RowCount + 1
' Run function
exceltojson
Next rw
Я борюсь с тем, как передать это функции exceltojson в качестве нового номера строки, чтобы она использовалась в качестве ееrng
значение?