VBA-遍历数组中的string值并确定它们是否与特定文本相同

我有一个excel的数据集很多列。 我正在使用UserForm条目来填充这些列。 但是我也希望能够在用户表单中编写一个现有的ID,并使用从表单中提取的相应数据自动填充useform。 列的顺序可能会改变,所以我不想使用偏移function来做到这一点。

我想在我的代码中做的是做一个数组与所有的列名称(它是相应的文本框中的条目forms命名相同)。

首先,我正在查找该行的ID。 然后我想遍历不同的列,并find它们下面的值对应的ID来填充我的表单。

问题是,我想使用“数组(我)”作为我的用户表单中的文本框的名称,但它不读取它。 例如:

如果我直接写入MRN =单元格(CSN_R,Changing_C),它会填充具有正确数据的条目表单,因为它select“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 

当你使用myarray(i) = Cells(CSN_R, Changing_C) **** not working你只是覆盖你的数组值

它看起来像你想要做的是将文本分配给用户窗体控件文本框。 你应该能够通过用户名称来引用文本框 – 它叫什么名字?

说这是你可以使用的默认“UserForm1”:

 UserForm1.Controls(myarray(i)).Text = Cells(CSN_R, Changing_C) 

尝试像这样:

 Me.Controls(myarray(i)) = Cells(CSN_R, Changing_C)