Сообщение об ошибке «Метод или элемент данных не найден» - PullRequest
0 голосов
/ 02 марта 2020

Итак, в данный момент у меня есть этот кусок кода, и когда я нажимаю кнопку, которая запускает его, появляется ошибка «Метод или элемент данных не найден», и он выделяет строку «Question13.hide»

У меня есть повторно использовал один и тот же кусок кода для всех моих пользовательских форм, и это только дает мне ошибку на экране 13, почему это происходит?

Private Sub CommandButton1_Click ()

'Option 1
If CheckBox1.Value = True Then Worksheets("Results").Range("D54").Value = True
If CheckBox1.Value = True Then Worksheets("Results").Range("D54").Interior.ColorIndex = 10
If CheckBox1.Value = True Then Worksheets("Results").Range("D54").Font.Bold = True
If CheckBox1.Value = False Then Worksheets("Results").Range("D54").Value = False
If CheckBox1.Value = False Then Worksheets("Results").Range("D54").Interior.ColorIndex = 3
If CheckBox1.Value = False Then Worksheets("Results").Range("D54").Font.Bold = True

'Option 2
If CheckBox2.Value = True Then Worksheets("Results").Range("E54").Value = True
If CheckBox2.Value = True Then Worksheets("Results").Range("E54").Interior.ColorIndex = 10
If CheckBox2.Value = True Then Worksheets("Results").Range("E54").Font.Bold = True
If CheckBox2.Value = False Then Worksheets("Results").Range("E54").Value = False
If CheckBox2.Value = False Then Worksheets("Results").Range("E54").Interior.ColorIndex = 3
If CheckBox2.Value = False Then Worksheets("Results").Range("E54").Font.Bold = True

'Option 3
If CheckBox3.Value = True Then Worksheets("Results").Range("F54").Value = True
If CheckBox3.Value = True Then Worksheets("Results").Range("F54").Interior.ColorIndex = 10
If CheckBox3.Value = True Then Worksheets("Results").Range("F54").Font.Bold = True
If CheckBox3.Value = False Then Worksheets("Results").Range("F54").Value = False
If CheckBox3.Value = False Then Worksheets("Results").Range("F54").Interior.ColorIndex = 3
If CheckBox3.Value = False Then Worksheets("Results").Range("F54").Font.Bold = True

'Option 4
If CheckBox4.Value = True Then Worksheets("Results").Range("G54").Value = True
If CheckBox4.Value = True Then Worksheets("Results").Range("G54").Interior.ColorIndex = 10
If CheckBox4.Value = True Then Worksheets("Results").Range("G54").Font.Bold = True
If CheckBox4.Value = False Then Worksheets("Results").Range("G54").Value = False
If CheckBox4.Value = False Then Worksheets("Results").Range("G54").Interior.ColorIndex = 3
If CheckBox4.Value = False Then Worksheets("Results").Range("G54").Font.Bold = True

Question13.Hide
Question14.Show

End Sub

1 Ответ

1 голос
/ 02 марта 2020

Вместо того, чтобы копировать код в каждую форму, поместите его в модуль

Sub UpdateSheet(ByRef frm As UserForm, ByRef rng As Range)

    Dim i As Integer, chk As Object

    For i = 1 To 4
        Set chk = frm.Controls.Item("CheckBox" & i)
        rng.Value = chk.Value
        rng.Font.Bold = True
        If chk.Value = True Then
           rng.Interior.ColorIndex = 10
        Else
           rng.Interior.ColorIndex = 3
        End If
        Set rng = rng.Offset(0, 1)
    Next

End Sub

, а затем поместите этот код в каждую форму, изменив «D54» и Userform2, чтобы соответствовать каждому вопросу

Private Sub CommandButton1_Click()

    ' form Question 1
    Dim rng As Range
    Set rng = ThisWorkbook.Sheets("Results").Range("D54")
    Module1.UpdateSheet Me, rng
    Me.Hide
    UserForm2.Show

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...