我正在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
然而,声明如果i =“”仍然以黄色突出显示,我不明白为什么...... 有人会有解决方案吗?
谢谢!
答案 0 :(得分:1)
i
是Integer
,因此与空String
的比较无效。
你最接近的事情是
If i = 0 Then
但是,如果您希望在保存工作簿时将i
的值保留为,,则最简单的方法是从工作簿中读取其值。
答案 1 :(得分:0)
当然,您无法将字符串分配给整数。这是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
答案 2 :(得分:0)
我喜欢以下
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