Хорошо, я новичок в этом сообществе, и мне помогли многие пользователи из других частей этого сайта. Я вчера отправил вопрос, и я еще не получил никакого ответа. Я просматривал сайт на предмет вопросов Excel VBA и наткнулся на это сообщество, и я подумал, что, возможно, разместил вопрос в неправильном разделе, так почему бы не попробовать здесь, и, возможно, кто-то отсюда может помочь мне в этом. Если это дублирующий вопрос, то я действительно извиняюсь за это.
У меня есть пользовательская форма, созданная с помощью нескольких пользователей этого сайта, и все функции работают так, как должно быть. Мне пришлось внести несколько изменений в один из листов, и теперь я застрял в том, как заставить его работать с новыми добавленными опциями. Это флажок1, который я добавил для пользовательской формы1, что, если и когда он будет нажат или проверен, данные из первых двух текстовых полей будут также скопированы на лист с именем profitloss (та же рабочая книга). 13 листов. 12 месяцев и один для прибыли. Мне нужен код VBA, чтобы заставить checkbox1 работать так, чтобы только при его проверке только тогда он копировал данные в убыток.
Если кто-нибудь может помочь с этим, я был бы очень признателен. В настоящем затруднительном положении здесь! и любая помощь очень полезна для достижения этой цели. Заранее спасибо. Код ниже, который находится в userform1 на данный момент.
Private Sub ComboBox1_Change()
Dim SheetName As String
Dim ws As Worksheet
Dim LastRow As Long
SheetName = ComboBox1.Value
Set ws = Sheets(SheetName)
LastRow = ws.Cells(ws.Rows.Count, "G").End(xlUp).Row
Label8.Caption = " Balance is: " & ws.Cells(LastRow, 7).Value
Private Sub CommandButton1_Click()
Dim dcc As Long
Dim abc As Worksheet, pfl As Worksheet
Set abc = ThisWorkbook.Worksheets(Me.ComboBox1.Value)
Set pfl = Sheets("ProfitLoss")
With abc
dcc = .Range("A" & Rows.Count).End(xlUp).Row
.Cells(dcc + 1, 1).Value = Date
.Cells(dcc + 1, 2).Value = Me.TextBox1.Value
.Cells(dcc + 1, 3).Value = Me.TextBox2.Value
.Cells(dcc + 1, 4).Value = Me.TextBox3.Value
.Cells(dcc + 1, 5).Value = Me.TextBox4.Value
.Cells(dcc + 1, 6).Value = Me.TextBox5.Value
End With
With pfl
dcc = .Range("A" & Rows.Count).End(xlUp).Row
.Cells(dcc + 1, 1).Value = Date
.Cells(dcc + 1, 2).Value = Me.TextBox1.Value
.Cells(dcc + 1, 3).Value = Me.TextBox2.Value
.Cells(dcc + 1, 4).Value = Me.TextBox3.Value
.Cells(dcc + 1, 5).Value = Me.TextBox4.Value
.Cells(dcc + 1, 6).Value = Me.TextBox5.Value
End With
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
End Sub
Я могу поделиться скриншот листа и пользовательской формы для ясного понимания. У меня нет опыта в Excel VBA, поэтому я изо всех сил пытаюсь объяснить вопрос, если честно. Ваша помощь очень ценится в этом, а также за ваше терпение. Заранее спасибо. Приветствия.
Редактировать:
Хорошо, я отредактировал, сделал как предложено @FreeMan (спасибо за это), и я получил это далеко в:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then Set abc =
ThisWorkbook.Worksheets(Me.ComboBox1.Value)
Set pfl = Sheets("ProfitLoss")
With abc
dcc = .Range("A" & Rows.Count).End(xlUp).Row
.Cells(dcc + 1, 1).Value = Date
.Cells(dcc + 1, 2).Value = Me.TextBox1.Value
.Cells(dcc + 1, 3).Value = Me.TextBox2.Value
End With
End Sub
ОК, это работает, вроде. Это не дает никакой ошибки, что, я полагаю, всегда хорошо! но, но это делает двойные записи в январе 2019 года. Что не круто. Происходит следующее: я выбираю месяц в поле comboxbox1 и, скажем, январь 2019 года. В комментарии я пишу аренду, а в аренде - 1, и как только я нажимаю флажок, запись добавляется на листе января 2019 года, даже до того, как я нажимаю добавить кнопку ввода на userform1. Теперь то же самое, что я сказал выше, и затем я нажимаю кнопку «Добавить запись в userform1», тогда она делает запись в январе 2019 года, а также в «Прибыль». Так что это работает, но делает двойные записи, когда нажмите кнопку Добавить данные.
Я на 1000% уверен, что все испортил, я это уже знаю! LOL, но я не знаю, что это такое и как остановить ввод данных, как только нажмете checbox1. Ваша помощь очень нужна и ценится. Приветствия.