Я создал пользовательскую форму с именем blocksForm
внутри книги. Кнопки внутри формы заполнят лист BBG
данными из формы. Я хочу, чтобы форма могла отображаться, даже если мой лист BBG
не пустой и заполните следующую пустую ячейку. Моя форма будет загружаться только после нажатия кнопки команды, когда лист BBG
пуст.
Когда лист не пуст, и я нажимаю кнопку команды, чтобы загрузить форму, я получаю ошибку 1004 и отладчиквыделение Load blocksForm
из моего кода
Private Sub blocksSorter_Click()
Load blocksForm
blocksForm.Show
End Sub
Я предполагаю, что проблема может быть из-за кода инициализации, приведенного ниже, но я не могу точно указать его
Public Sub UserForm_Initialize()
With Worksheets("DATA")
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
End With
With Worksheets("BBG")
lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
End With
MsgBox (lastRow)
If Worksheets("BBG").Range("A1") = "" And i < 3 Then
i = 2
End If
activeCheck.Value = False
itwCheck.Value = False
yestCheck.Value = False
recentCheck.Value = False
TextBox2.Value = ""
ric = Worksheets("DATA").Range("H" & i)
name = Worksheets("DATA").Range("B" & i)
valueUSD = Worksheets("DATA").Range("C" & i)
adV = Worksheets("DATA").Range("D" & i)
sitchStr = ""
dstr = ""
timeStr = ""
pStr = ric & " " & name & " " & valueUSD & " " & adV
Label1.Caption = pStr
If i > lRow Then
Unload Me
Application.Worksheets("BBG").Activate
End If
End Sub
Моя публикацияпеременные
Public valueUSD, name, ric, adV, dstr, sitchStr, timeStr, pStr As String
Public i, lRow, lastRow, j, k As Long
Остальная часть моего кода
Private Sub activeCheck_Change()
If activeCheck.Value = True Then
sitchStr = activeCheck.Caption
dstr = dstr + sitchStr
Else
sitchStr = ""
End If
End Sub
Private Sub itwCheck_Change()
If activeCheck.Value = False And itwCheck.Value = True Then
sitchStr = sitchStr + itwCheck.Caption
dstr = dstr + sitchStr
ElseIf activeCheck.Value = True And itwCheck.Value = True Then
MsgBox ("You can only be active OR ITW")
End If
End Sub
Private Sub yestCheck_Change()
If yestCheck.Value = True Then
timeStr = timeStr & " " & yestCheck.Caption
dstr = dstr + timeStr
End If
End Sub
Private Sub recentCheck_Change()
If yestCheck.Value = False And recentCheck.Value = True Then
timeStr = timeStr & " " & recentCheck.Caption
dstr = dstr + timeStr
ElseIf yestCheck.Value = True And recentCheck.Value = True Then
MsgBox ("You cannot select both yesterday and recently")
End If
End Sub
Private Sub TextBox2_Change()
If sitchStr = "" Then
dstr = TextBox2.Value
ElseIf sitchStr <> "" Then
dstr = sitchStr & timeStr & ", " & TextBox2.Value
End If
End Sub
Private Sub addBtn_Click()
Application.ScreenUpdating = False
Dim pasteSheet As Worksheet
Set pasteSheet = Application.Worksheets("SHANE FOR BBG")
If j = 0 Then j = 1
If Worksheets("BBG").Range("A1") = "" Then
k = 1
ElseIf Worksheets("BBG").Range("A1") <> "" Then
With Worksheets("BBG")
lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
End With
j = lastRow + 2
End If
If Not IsError(Application.Match(name, Sheets("BBG").Range("A:A"), 0)) Then
MsgBox ("This is already on your list")
End If
pasteSheet.Cells(j, k) = name
pasteSheet.Cells(j, k + 1) = "(" & ric & ")"
pasteSheet.Cells(j + 1, k) = valueUSD & ","
pasteSheet.Cells(j + 1, k + 1) = " " & adV & " ADV"
If dstr = "" Then
j = j + 3
ElseIf dstr <> "" Then
pasteSheet.Cells(j + 2, k) = dstr
j = j + 4
End If
i = i + 1
UserForm_Initialize
End Sub
Private Sub skipBtn_Click()
If i = 2 Then
i = 3
Else
i = i + 1
End If
UserForm_Initialize
End Sub
Private Sub prevBtn_Click()
i = i - 1
MsgBox (dstr)
UserForm_Initialize
End Sub
Sub exitBtn_Click()
Unload Me
End Sub