Один и тот же код работает по-разному на разных пользовательских формах - PullRequest
0 голосов
/ 21 мая 2019

Я создал пользовательскую форму для записи и получения данных о тестируемых двигателях. Для одного типа двигателя код работает нормально, для другого у меня проблема. Единственное различие между ними заключается в названии страницы, на которой хранятся данные, для рабочей - это данные DW10, а для нерабочей - это данные XUD9. Он будет записывать данные XUD9 и извлекать из них без проблем, но не позволит мне обновить их, поэтому это не может быть именем листа, поскольку ни одна из пользовательских форм не будет работать.

Форма пользователя XUD9 точно такая же, как форма DW10, это копия с измененными только именами.

Private Sub confirmupdate_Click()

Dim Rerow As Range

Set Rerow = Worksheets("DW10 Data").Range("H:H").Find(Codetext, searchdirection:=xlPrevious)


Worksheets("DW10 Data").Cells(Rerow.Row, 2).Value = Rigtext2.Text
Worksheets("DW10 Data").Cells(Rerow.Row, 4).Value = Serialtext2.Text
Worksheets("DW10 Data").Cells(Rerow.Row, 5).Value = Hourstext2.Text
Worksheets("DW10 Data").Cells(Rerow.Row, 3).Value = CDbl(CDate(Datetext2))
Worksheets("DW10 Data").Cells(Rerow.Row, 6).Value = parttext2.Text
Worksheets("DW10 Data").Cells(Rerow.Row, 7).Value = commentstext2.Text
Worksheets("DW10 Data").Cells(Rerow.Row, 8).Value = codetext2.Text

confirmupdate.Visible = False

End Sub

Private Sub confirmupdate_Click()

Dim Rerow As Range

Set Rerow = Worksheets("XUD9 Data").Range("H:H").Find(Codetext, searchdirection:=xlPrevious)


Worksheets("XUD9 Data").Cells(Rerow.Row, 2).Value = Rigtext2.Text
Worksheets("XUD9 Data").Cells(Rerow.Row, 4).Value = Serialtext2.Text
Worksheets("XUD9 Data").Cells(Rerow.Row, 5).Value = Hourstext2.Text
Worksheets("XUD9 Data").Cells(Rerow.Row, 3).Value = CDbl(CDate(Datetext2))
Worksheets("XUD9 Data").Cells(Rerow.Row, 6).Value = parttext2.Text
Worksheets("XUD9 Data").Cells(Rerow.Row, 7).Value = commentstext2.Text
Worksheets("XUD9 Data").Cells(Rerow.Row, 8).Value = codetext2.Text

confirmupdate.Visible = False

End Sub

Сообщение об ошибке, которое я получаю в версии XUD9, в основном Rerow is Nothing, поэтому, очевидно, он не может найти значение Codetext для возврата нужной строки, но DW10 отлично работает с точно таким же кодом.

Есть что-то очевидное, что я упускаю? Я новичок в VBA и самоучка (Google - твой друг), так что это может быть что-то очень простое.

1 Ответ

0 голосов
/ 21 мая 2019

Вы можете использовать приведенный ниже код, чтобы убедиться, что то, что вы ищете, появляется на листах.

Option Explicit
Public Rerow As Range

Sub test(ByVal wsName As String, strCodeText As String)

    With ThisWorkbook.Worksheets(wsName)

        Set Rerow = .Range("H:H").Find(strCodeText, searchdirection:=xlPrevious)

        If Not Rerow Is Nothing Then
            .Cells(Rerow.Row, 2).Value = Rigtext2.Text
            .Cells(Rerow.Row, 4).Value = Serialtext2.Text
            .Cells(Rerow.Row, 5).Value = Hourstext2.Text
            .Cells(Rerow.Row, 3).Value = CDbl(CDate(Datetext2))
            .Cells(Rerow.Row, 6).Value = parttext2.Text
            .Cells(Rerow.Row, 7).Value = commentstext2.Text
            .Cells(Rerow.Row, 8).Value = codetext2.Text
        Else
            MsgBox strCodeText & " not appears in column H"
        End If

    End With

    confirmupdate.Visible = False

End Sub

Private Sub confirmupdate_Click()

    Dim Codetext As String

    Codetext = "Test" 'Change the Codetext to what you are looking for
    Call Module1.test("DW10 Data", Codetext)

    Codetext = "Test2" 'Change the Codetext to what you are looking for
    Call Module1.test("XUD9 Data", Codetext)


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