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
答
i
是Integer
,因此与空的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
@Joliba,只是好奇,如果这个代码会适合你 – user3598756
@Joliba,没关系,我会没有你的反馈生存的! – user3598756