If ...中的VBA变量然后不会增加

时间:2014-03-25 17:07:55

标签: excel vba excel-vba

更新 - 仍未解决

MODUL

Public igOneVar As Integer 

Sub ShowUserForm1() 

    UserForm1.Show 

End Sub 

表单

Private Sub Name_Click() 

Dim laufVar As Integer 

MsgBox "start " & igOneVar 

If ActiveSheet.Range("B2").Value = 2 Then 
    For laufVar = 8 To 250 
        If ActiveSheet.Range("C2").Value = 2 Then 
            ActiveSheet.Range("C3").Value = "If" 
            Exit For 
        ElseIf ActiveSheet.Range("C2").Value = 3 Then 
            ActiveSheet.Range("C3").Value = "ElseIf" 
            igOneVar = igOneVar + 1 
            Exit For 
        End If 
    Next laufVar 
End If 

MsgBox "end " & igOneVar 

Unload UserForm1 

End Sub 

所以我有一个按钮,打开一个Userform(模块),其中有一个cmdButton。如果我单击cmdButton(Name_Click),它将启动一些代码(表单)。但它不会存储增量变量。 MsgBox "start " & igOneVar中的变量为0并保持为0.

2 个答案:

答案 0 :(得分:0)

这个解决方案对我有用。我只是将我的变量存储在Excel工作表上。不是最好的方法,但我无法获得其他任何工作。

<强> MODUL

Sub ShowUserForm1() 

    UserForm1.Show 

End Sub

<强>表单

Private Sub Name_Click() 

Dim laufVar As Integer 
Dim igOneVar As Integer

igOneVar = Worksheets("Test").Range("A10").Value

If ActiveSheet.Range("B2").Value = 2 Then 
    For laufVar = 8 To 250 
        If ActiveSheet.Range("C2").Value = 2 Then 
            ActiveSheet.Range("C3").Value = "If" 
            Exit For 
        ElseIf ActiveSheet.Range("C2").Value = 3 Then 
            ActiveSheet.Range("C3").Value = "ElseIf" 
            igOneVar = igOneVar + 1
            Worksheets("Test").Range("A10").Value = igOneVar
            Exit For 
        End If 
    Next laufVar 
End If 

Unload UserForm1 

End Sub 

答案 1 :(得分:0)

由于变量igOneVar是公共的,因此其范围扩展到userform,当 Both 单元格“B2”= 2且单元格“C2”= 3时,它将递增到活动表格。

只要这两个条件都成立,由于EXIT FOR语句,igOneVar应该增加到1。尝试设置断点,因为似乎唯一的问题是从不执行增加igOneVar的行。