У меня есть список предметов и описания в столбце А. Первый предмет находится в 5-й строке. Каждый элемент сопровождается описанием элемента.
Это выглядит примерно так (по-разному, но с той же концепцией):
Apple
Red Fruit
Banana
Yellow Fruit
Я пытаюсь сделать так, чтобы они оба были разделены на 2 массива в зависимости от того, является ли это элементом или описание.
Я сделал это здесь:
Option Explicit
Option Base 1
Sub main()
Dim rngList As Range
Dim strNetId As String
Dim strListArray() As String
Set rngList = Sheets("data").Range("A1").CurrentRegion
Call CreateArray(rngList, strListArray())
Call CreateArray2(rngList, strListArray())
End Sub
Sub CreateArray(rngIn As Range, strArray() As String)
Dim iCols As Integer
Dim iRows As Integer
Dim iRowsH As Integer
Dim i As Integer
Dim j As Integer
Dim Counter As Integer
Dim Counter2 As Integer
Dim Count2 As Integer
iRows = (rngIn.Rows.Count - 1)
iCols = 1
iRowsH = (rngIn.Rows.Count - 1) / 2
ReDim strArray(iRows, iCols)
Count2 = 3
Counter = 1
Do
If Count2 Mod 2 <> 0 Then
strArray(Counter, 1) = rngIn.Cells(Count2 + 2, 1)
Counter = Counter + 1
End If
Count2 = Count2 + 1
Loop Until Count2 > iRows
End Sub
Sub CreateArray2(rngIn2 As Range, strArray2() As String)
Dim iCols As Integer
Dim iRows As Integer
Dim iRowsH As Integer
Dim i As Integer
Dim j As Integer
Dim Counter As Integer
Dim Counter2 As Integer
Dim Count2 As Integer
iRows = (rngIn2.Rows.Count - 1)
iCols = 1
iRowsH = (rngIn2.Rows.Count - 1) / 2
ReDim strArray2(iRows, iCols)
Count2 = 3
Counter = 1
Do
If Count2 Mod 2 = 0 Then
strArray2(Counter, 1) = rngIn2.Cells(Count2 + 2, 1)
Counter = Counter + 1
End If
Count2 = Count2 + 1
Loop Until Count2 > iRows
End Sub
Когда я сталкиваюсь с проблемой - заставить мою форму работать. Я хочу, чтобы вы запустили форму, а затем щелкнули один из элементов, которые будут заполнены в ListBox. Затем в текстовом поле появится соответствующее описание. Вот что у меня есть в коде моей формы, но я получаю сообщение об ошибке, когда вы фактически выбираете элемент из формы:
Option Base 0
Option Explicit
Dim strArray2()
Private Sub btnDone_Click()
Unload frmNetID
End Sub
Private Sub lstNetID_Click()
lblFirstName.Caption = strArray2(lstNetID.ListIndex + 2, 1)
End Sub
Private Sub UserForm_Initialize()
Dim rngList As Range
Dim strNetId As String
Dim strList() As String
Dim iR As Integer
With ThisWorkbook.Worksheets("data")
iR = .Range("A1").CurrentRegion.Rows.Count
Set rngList = .Range("A1:A" & iR) 'it assumes header row
Call CreateArray(rngList, strList())
End With
lstNetID.List() = strList()
End Sub
Где я делаю первую ошибку? Я предполагаю, что это как-то связано со строкой кода lblFirstName.Caption.