Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 - Fatal编程技术网

Excel 需要更正VBA代码。获取错误消息。”;对于已在使用的控制变量;

Excel 需要更正VBA代码。获取错误消息。”;对于已在使用的控制变量;,excel,vba,Excel,Vba,我在Excel中使用VBA 我收到一条错误消息,说控制变量已经在使用中。当错误弹出时,中每个r的第二个将在VBA编辑器中突出显示。有人可以帮助更正此代码吗。多谢各位 Dim ws As Worksheet Dim r As Range For Each ws In Worksheets If InStr(1, ws.Name, "Wk", 1) > 0 Then For Each r In ws.Range("C118:I124") For Eac

我在Excel中使用VBA

我收到一条错误消息,说控制变量已经在使用中。当错误弹出时,中每个r的第二个将在VBA编辑器中突出显示。有人可以帮助更正此代码吗。多谢各位

Dim ws As Worksheet
Dim r As Range

For Each ws In Worksheets
    If InStr(1, ws.Name, "Wk", 1) > 0 Then
        For Each r In ws.Range("C118:I124")
        For Each r In ws.Range("C163:J168")
        For Each r In ws.Cell(E2, E15, E28, E41, E54, E67, E80)
            r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name)
        Next r
    End If
Next ws

MsgBox "Done"
End Sub

您尝试运行三个不同的范围,即连接这些范围。然而,这不是每个的
的工作方式,您必须将其分解

Dim ws As Worksheet
Dim r As Range

For Each ws In Worksheets
    If InStr(1, ws.Name, "Wk", 1) > 0 Then
        For Each r In ws.Range("C118:I124")
            r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name)
        Next r

        For Each r In ws.Range("C163:J168")
            r.Formula = Replace(r.Formula, "Wk1", r.Parent.Name)
        Next r

        Range("E2").Formula = Replace(Range("E2").Formula, "Wk1", Range("E2").Parent.Name)
        Range("E15").Formula = Replace(Range("E15").Formula, "Wk1", Range("E15").Parent.Name)
        Range("E28").Formula = Replace(Range("E28").Formula, "Wk1", Range("E28").Parent.Name)
        Range("E41").Formula = Replace(Range("E41").Formula, "Wk1", Range("E41").Parent.Name)
        Range("E54").Formula = Replace(Range("E54").Formula, "Wk1", Range("E54").Parent.Name)
        Range("E67").Formula = Replace(Range("E67").Formula, "Wk1", Range("E67").Parent.Name)
        Range("E80").Formula = Replace(Range("E80").Formula, "Wk1", Range("E80").Parent.Name)
    End If
Next ws

MsgBox "Done"
End Sub

编辑:更改以容纳注释。它没有变得更漂亮,但恐怕没有办法让调用几个松散的单元格变得更优雅。

每个
For Each
循环必须用相应的
Next
语句关闭。您的代码为每个循环“打开”了4个
,但只“关闭”了其中的两个循环。此外,每个
循环的两个最里面的
与外部循环共享相同的循环变量(
r
),这是不可能的:每个循环都必须有自己的循环变量谢谢,。我试过那个代码,但现在我收到一条错误消息,代码中突出显示的单元格E2表示变量未定义感谢花时间键入代码。我将其粘贴到编辑器中,但我收到一条“对象变量或未设置块变量”错误消息。在您键入的代码中,E54附近还缺少一个引号,以防有人想使用它。@沮丧成倍增加了我的错误:在最后一部分中,将
r.formula
更改为
Range(“EXX”)。formula
即。与
=
左侧的代码相同。不要倒立。当你说最后一部分时,你的意思是r.formula最后一次出现在代码中吗。什么是“EXX”。你会打字吗it@frustrationmultiplied答案已编辑。但是-不想听起来很刺耳-当您没有掌握这些指令或调试此类错误时,为什么要编写VBA?