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

问题描述:

我在VBA上试图创建一个记录在不同单元格中的工作簿打开次数的宏。每次打开时,它都会创建一个带有开头数字的新单元格。所以我为此创建了一个计数器。VBA:i = i + 1计数器不工作

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 

然而,声明如果我=“”仍然以黄色突出显示,我不明白为什么... 会有人有办法解决吗?

谢谢!

当然,您不能将字符串分配给整数。这是一个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 

iInteger,因此与空的String比较无效。

你可以做的最接近的事是

If i = 0 Then

但是,如果你想要的值来i坚持当你保存工作簿,做最简单的事情就是读取来自它的价值工作簿。

我会去像如下

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 
+0

@Joliba,只是好奇,如果这个代码会适合你 – user3598756

+0

@Joliba,没关系,我会没有你的反馈生存的! – user3598756