Excel VBA设置字符串值并更改字符串名称
嗨,我正在尝试创建一个宏,它将从excell表中收集数据。我用相似的名称创建字符串,并以数字结尾。请问有没有办法在这个字符串上循环?这段代码不起作用,但会解释我想做什么Excel VBA设置字符串值并更改字符串名称,excel,vba,string,loops,data-collection,Excel,Vba,String,Loops,Data Collection,嗨,我正在尝试创建一个宏,它将从excell表中收集数据。我用相似的名称创建字符串,并以数字结尾。请问有没有办法在这个字符串上循环?这段代码不起作用,但会解释我想做什么 Sub vzor() Dim i As Integer Dim input1, input2, input3, input4, input5, input6, input7, _ input8, input9, input10, input11, input12, input13, input14, _ input15, i
Sub vzor()
Dim i As Integer
Dim input1, input2, input3, input4, input5, input6, input7, _
input8, input9, input10, input11, input12, input13, input14, _
input15, input16, input17, input18, input19, input20, input21, _
input22, input23, input24, input25, input26, input27, input28, _
input29, input30, input31, input32, input33, input34, input35, _
input36, input37, input38, input39, input40, input41, input42, _
input43, input44, input45, input46, input47, input48, input49, _
input50, input51, input52, input53, input54, input55, input56, _
input57, input58, input59, input60, input61, input62, input63, _
input64, input65, input66, input67 As String
For i = 2 To 67
If Range("B" & i).Value = "" Then
MsgBox "Please fill all required data (The cells with red fill)", vbOKOnly, "Missing data"
Range("B" & i).Select
Else
input & i = Range("B" & i).Value
End If
Next
这似乎是一本字典的完美例子
Option Explicit
Dim wb As Workbook, ws As Worksheet
Dim inputdict As Variant
Dim i As Long
Set inputdict = CreateObject("Scripting.Dictionary")
Set wb = ThisWorkbook 'Change if necessary
Set ws = wb.Sheets(1) 'Change if necessary
For i = 1 To 67
If ws.Cells(i, "B").Value = vbNullString Then
MsgBox "Please fill all required data (The cells with red fill)", vbOKOnly, "Missing data"
ws.Cells(i, "B").Select
Else
inputdict.Add i, ws.Cells(i, "B").Value
End If
Next i
这将创建一个字典(
inputdict
)。此字典的键是由i
定义的整数,范围从1到67。这些值是您在代码中指定的单元格中的值。将arr(1到67)设置为字符串,arr(i)=范围(“B”&i)。值
。与其将67个不同的输入调暗,不如将其设置为单个数组(1到67)
。谢谢,它正在工作。我认为VBA没有内置变量反射功能,因此您将需要使用数组代替。除了input67
,所有其他输入变量都定义为Variant
,它对我有效,但只需稍作更改Dim inputdict Set inputdict=CreateObject(“Scripting.Dictionary”)
且不带句子Set inputdict=New Scripting.Dictionary