2017-02-22 14 views
0

I'am on 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 

Однако заявление Если я = «» остается подсвеченным в желтый цвет, и я не понимаю, почему ... бы кто-то есть решение?

Спасибо!

ответ

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 
1

i является Integer, поэтому сравнение с пустым String недействительно.

Ближайшей вещь, которую вы можете сделать, это

If i = 0 Then

Но если вы хотите, чтобы значение i к сохраняется при сохранении рабочей книги, самое простое, что нужно сделать, это прочитать его значение из Учебное пособие.

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

@Joliba, просто любопытно, если этот код подошел бы вам – user3598756

+0

@Joliba, не имеет значения, я буду жить без вашей обратной связи, как хорошо! – user3598756

 Смежные вопросы

  • Нет связанных вопросов^_^