我在Excel中有很多列的數據集。我正在使用UserForm條目來填充這些列。但是我也希望能夠在用戶窗體中編寫一個現有的ID,並使用從電子表格中提取的相應數據自動填充useform。列的順序可能會改變,所以我不想使用偏移功能來做到這一點。VBA-對數組中的字符串值進行迭代並確定它們是否與特定文本相同
我想在我的代碼中做什麼是使所有列名稱(這是相應的文本框中的條目形式命名相同)的數組。
首先,我找到了該行的ID。然後,我想遍歷不同的列,並找到它們下面的與該ID對應的值來填充我的輸入表單。
問題是我想使用「數組(i)」作爲我的用戶窗體中的文本框的名稱,但它不會讀取它。例如:
如果我直接寫入MRN = Cells(CSN_R,Changing_C),它確實用正確的數據填充條目表單,因爲它選擇「MRN」或「Myarray(0)」下的id行和列號。 」。但是,如果我使用myarray(0)=單元格(CSN_R,Changing_C),它不會......我不知道如何才能使其工作。
Dim CSN_Find As Range
Dim CSN_Existing As Range
Dim CSN_New As Range
Dim CSN_R As Integer
Dim Changing_C As Integer
' Look for the CSN value
Worksheets("Input Data").Activate
Worksheets("Input Data").Rows(1).Find(What:="CSN", LookIn:=xlValues).EntireColumn.Select
Set CSN_Find = Selection.Find(What:=CSN.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
' If it's found, then populate form
If (Not CSN_Find Is Nothing) Then
CSN_Find.Activate
CSN_R = ActiveCell.Row
Dim myarray As Variant
Dim i As Integer
Dim lastColumn As Integer
myarray = Array("MRN", "ArrivalDate",...(I have a lot))
lastColumn = Worksheets("Input Data").Cells(1, columns.Count).End(xlToLeft).Column
i = 0
Do Until i = lastColumn + 1
Changing_C = Worksheets("Input Data").Rows(1).Find(What:=myarray(i), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Column
myarray(i) = Cells(CSN_R, Changing_C) **** not working
i = i + 1
Loop
' Else, do nothing:
Else: If CSN_Find Is Nothing Then Exit Sub
End If
End Sub
我只是說這個和它的工作原理,但它會需要一堆的if語句... 如果myArray的(I)= 「MRN」 那麼 MRN =細胞(CSN_R,Changing_C) 結束如果 如果myArray的(I)= 「ArrivalDate」 那麼 ArrivalDate =細胞(CSN_R,Changing_C) 結束如果 – pmv