Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA设置字符串值并更改字符串名称_Excel_Vba_String_Loops_Data Collection - Fatal编程技术网

Excel VBA设置字符串值并更改字符串名称

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

嗨,我正在尝试创建一个宏,它将从excell表中收集数据。我用相似的名称创建字符串,并以数字结尾。请问有没有办法在这个字符串上循环?这段代码不起作用,但会解释我想做什么

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