У меня есть пользовательская форма, которая позволяет пользователю вводить количество дефектов продукта в текстовое поле.Это делается как часть ежемесячного отчета, поэтому у меня есть кнопки выбора месяца (12 вариантов).Есть также кнопки выбора типа продукта.Код в основном оценивает, какие параметры выбраны, и копирует значения текстового поля (количество дефектов) в определенные ячейки в другой электронной таблице (для целей отчетности).Не все текстовые поля должны иметь значения, введенные пользователем.
Вы можете проверить скриншот пользовательской формы https://imgur.com/a/6QefjCp.
Как вы можете видеть из кода, я используюкуча операторов IF для принятия решения - я бы хотел уменьшить длину этого кода, но я не знаю, с чего начать.
До этого я никогда не использовал VBA, так что нетЯ действительно пытался найти решение.В своем текущем состоянии код работает без нареканий.Просто глядя на уменьшение и очистку.
Private Sub OKButton_Click() 'This is the button the user clicks to finalize
'the data entry
'Calling the Product type modules
Call Product1Module
Call Product2Module
Call Product3Module
End Sub
Sub Product1Module() 'All product modules will look almost exactly like this
'except the cell ranges will be different
If UserForm.Product1Button.Value = True Then 'Checking for Product1 Option button
If UserForm.JANButton.Value = True Then
'Record value to textbox if JAN is selected
Sheets("Sheet1").Range("B1107").Value = UserForm.TextBox1.Value
Sheets("Sheet1").Range("B1115").Value = UserForm.TextBox2.Value
Sheets("Sheet1").Range("B1108").Value = UserForm.TextBox3.Value
Sheets("Sheet1").Range("B1116").Value = UserForm.TextBox4.Value
Sheets("Sheet1").Range("B1109").Value = UserForm.TextBox5.Value
Sheets("Sheet1").Range("B1117").Value = UserForm.TextBox6.Value
Sheets("Sheet1").Range("B1111").Value = UserForm.TextBox7.Value
ElseIf UserForm.FEBButton.Value = True Then
Sheets("Sheet1").Range("C1107").Value = UserForm.TextBox1.Value
Sheets("Sheet1").Range("C1115").Value = UserForm.TextBox2.Value
Sheets("Sheet1").Range("C1108").Value = UserForm.TextBox3.Value
Sheets("Sheet1").Range("C1116").Value = UserForm.TextBox4.Value
Sheets("Sheet1").Range("C1109").Value = UserForm.TextBox5.Value
Sheets("Sheet1").Range("C1117").Value = UserForm.TextBox6.Value
Sheets("Sheet1").Range("C1111").Value = UserForm.TextBox7.Value
...
End If
End If
End Sub