VBA : i = i + 1 计数器不工作

VBA : i = i + 1 counter not working

我正在 VBA 尝试创建一个在不同单元格中记录工作簿打开次数的宏。每次打开时,它都会创建一个带有打开编号的新单元格。所以我为此创建了一个计数器。

   Option Explicit 

   Dim i As Integer  

   Private Sub Workbook_Open() 
     If i = "" Then 
       i = 1 
     End If  

     ThisWorkbook.Worksheets("Feuil1").Cells(i, 1).Value = "Session " & i  
     i = i + 1
     Debug.Print i  
   End Sub

但是,语句 If i = "" 仍然以黄色突出显示,我不明白为什么... 有人会有解决方案吗?

谢谢!

i 是一个 Integer,因此与空 String 的比较无效。

你能做的最接近的事情是

If i = 0 Then

但是如果你想在保存工作簿时i保持的值,最简单的方法就是从工作簿中读取它的值。

当然不能将字符串赋给整数。这是一个 type mismatch 错误。

您需要获取列中的最后一个单元格,然后递增它。

Private Sub Workbook_Open()
    ' Fetch the last cell from column 1
    Dim r As Range
    With ThisWorkbook.Worksheets("Feuil1")
        Set r = .Cells(.Rows.Count, 1).End(xlUp)
    End With

    ' Get the last session number, or 0 if not present or doesn't match
    Dim lastSession As Long: lastSession = 0
    If Not IsEmpty(r) Then
        Dim p As Long: p = InStr(1, Trim(r.value), "Session ")
        If p = 1 Then
            lastSession = CLng(Mid(r.value, p + Len("Session "), 10000))
        End If
    End If
    r.Offset(1).value = "Session " & (lastSession + 1)
End Sub

我会像下面这样

Private Sub Workbook_Open()
    With Worksheets("Feuil1")
        With .Cells(.Rows.Count, 1).End(xlUp)
            .Offset(1) = "Session " & Val(Replace(.Value, "Session ", "")) + 1
        End With
    End With
End Sub