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
我正在 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