У меня есть пользовательская форма1 с именем «srForm», которая при нажатии кнопки «Сохранить» помещает данные в мою основную таблицу («srData»).В первом столбце «A» будет размещен уникальный идентификатор, сгенерированный userform_initialize.
Код userform_initialize выглядит следующим образом:
Private Sub UserForm_Initialize()
Me.srID.Enabled = True
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("srData")
'find last data row from database
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
If ws.[a2].Value = "" Then
Me.srID.Text = "SR-" & 1
Else
With ws.Cells(iRow, 1)
Me.srID.Text = Left(.Value, 3) & CInt(Right(.Value, Len(.Value) - 3)) + 1
End With
End If
End Sub
В userform1 есть флажок «zeefTest», если этопроверен 2-й пользовательской формы "Fracties" откроется.Эта пользовательская форма содержит больше флажков и кнопку выбора команды.Когда кнопка выбора команды проверена, данные будут помещены в рабочий лист («Result_Particles»).В этом столбце таблицы «А» также указан уникальный идентификатор.Но это зависит от того, установлен ли флажок zeeftest.Код для вызова userform2 "Fracties":
Private Sub zeefTest_Click()
Fracties.Show
Dim sRow As Long
With Worksheets("Result_Particles").Range("A1")
sRow = Worksheets("Result_Particles").Range("A1").CurrentRegion.Rows.Count
.Offset(sRow, 0).Value = Me.srID.Value
End With
End Sub
Теперь, когда нажата 2-я кнопка выбора пользовательской формы, пользовательская форма выгружается и может быть нажата 1-я кнопка сохранения пользовательской формы.
Проблема, с которой я столкнулся, состоит в том, что код userform1 не работает правильно с кодом в userform2.Я думаю, что он переопределяет код userform2, когда я нажимаю на кнопку команды Save в пользовательской форме 1. Уникальный идентификационный код помещается в таблицу («Result_Particles») должным образом, но флажок interior.colorindex не записывает в соответствующие столбцы.Это только делает это правильно для первого ряда.Код для userform2:
Private Sub CmB1_Click()
Dim iRow As Long
With Worksheets("Result_Particles").Range("A1")
iRow = Worksheets("Result_Particles").Range("A1").CurrentRegion.Rows.Count
If Cbx1.Value = True Then
.Offset(iRow, 1).Interior.ColorIndex = 2
Else:
.Offset(iRow, 1).Interior.ColorIndex = 15
End If
If Cbx2.Value = True Then
.Offset(iRow, 2).Interior.ColorIndex = 2
Else:
.Offset(iRow, 2).Interior.ColorIndex = 15
End If
If Cbx3.Value = True Then
.Offset(iRow, 3).Interior.ColorIndex = 2
Else:
.Offset(iRow, 3).Interior.ColorIndex = 15
End If
If Cbx4.Value = True Then
.Offset(iRow, 4).Interior.ColorIndex = 2
Else:
.Offset(iRow, 4).Interior.ColorIndex = 15
End If
If Cbx5.Value = True Then
.Offset(iRow, 5).Interior.ColorIndex = 2
Else:
.Offset(iRow, 5).Interior.ColorIndex = 15
End If
If Cbx6.Value = True Then
.Offset(iRow, 6).Interior.ColorIndex = 2
Else:
.Offset(iRow, 6).Interior.ColorIndex = 15
End If
If Cbx7.Value = True Then
.Offset(iRow, 7).Interior.ColorIndex = 2
Else:
.Offset(iRow, 7).Interior.ColorIndex = 15
End If
If Cbx8.Value = True Then
.Offset(iRow, 8).Interior.ColorIndex = 2
Else:
.Offset(iRow, 8).Interior.ColorIndex = 15
End If
If Cbx9.Value = True Then
.Offset(iRow, 9).Interior.ColorIndex = 2
Else:
.Offset(iRow, 9).Interior.ColorIndex = 15
End If
If Cbx10.Value = True Then
.Offset(iRow, 10).Interior.ColorIndex = 2
Else:
.Offset(iRow, 10).Interior.ColorIndex = 15
End If
If Cbx11.Value = True Then
.Offset(iRow, 11).Interior.ColorIndex = 2
Else:
.Offset(iRow, 11).Interior.ColorIndex = 15
End If
If Cbx12.Value = True Then
.Offset(iRow, 12).Interior.ColorIndex = 2
Else:
.Offset(iRow, 12).Interior.ColorIndex = 15
End If
End With
Unload Me
End Sub
Я надеюсь, что кто-то может помочь мне исправить мой код для правильной работы.Я знаю, что это не самый удачный код, поэтому, если кто-то знает лучший способ написания кода для моих флажков, это также будет высоко цениться.
Спасибо, что уделили время.