Функция обновления Excel VBA

#excel #vba

#excel #vba

Вопрос:

У меня возникли проблемы с запуском этого кода. Целью кода является «обновление» существующей строки в электронной таблице базы данных на основе данных, введенных из пользовательской формы в Excel. Поскольку в электронной таблице базы данных очень много строк, я написал код, чтобы сначала скопировать данные в пустую электронную таблицу, а затем переместить их в электронную таблицу базы данных. однако, когда я запускаю этот код, я продолжаю получать сообщение об ошибке, которое должно отображаться в конце кода. Есть ли у вас какое-либо представление о том, где мои ошибки?

 Private Sub UpdateButton_Click()
Application.ScreenUpdating = False 'new
Dim copySheet As Worksheet 'new
Dim pasteSheet As Worksheet 'new
Dim f As Range, v

v = Trim(Me.TextBox1.Value)

Set copySheet = Worksheets("COPY AREA") 'NEW
Set pasteSheet = Worksheets("Database Entry Sheet") 'new

copySheet.Activate 'new

If Len(v) = 0 Then
     Msgbox "Run number cannot be blank", vbExclamation, "No"
     Exit Sub
End If

 Set f = ActiveSheet.Range("A:A").Find(What:=v, _
                                      lookat:=xlWhole)
 If Not f Is Nothing Then
     If Msgbox("Are you sure you want to update the record?", _
                  vbYesNo   vbQuestion, "UpdateRecord") = vbYes Then
 
 'Transfer information
        Cells(4, 1).Value = TextBox1.Value
        Cells(4, 2).Value = textbox2.Value
        Cells(4, 3).Value = textbox3.Value
        Cells(4, 4).Value = textbox4.Value
        Cells(4, 5).Value = textbox5.Value
        Cells(4, 6).Value = textbox6.Value
        Cells(4, 7).Value = textbox7.Value
        Cells(4, 8).Value = textbox8.Value
        Cells(4, 9).Value = textbox9.Value
        Cells(4, 11).Value = textbox11.Value
        Cells(4, 12).Value = textbox12.Value
        Cells(4, 13).Value = textbox13.Value
        Cells(4, 14).Value = textbox14.Value
        Cells(4, 17).Value = textbox17.Value
        Cells(4, 18).Value = textbox18.Value
        Cells(4, 19).Value = textbox19.Value
        Cells(4, 20).Value = textbox20.Value
        Cells(4, 21).Value = textbox21.Value
        Cells(4, 25).Value = textbox25.Value
        Cells(4, 26).Value = textbox26.Value
        Cells(4, 27).Value = textbox27.Value
        Cells(4, 28).Value = textbox28.Value
        Cells(4, 29).Value = textbox29.Value
        Cells(4, 33).Value = textbox33.Value
        Cells(4, 34).Value = textbox34.Value
        Cells(4, 35).Value = textbox35.Value
        Cells(4, 36).Value = textbox36.Value
        Cells(4, 37).Value = textbox37.Value
        Cells(4, 41).Value = textbox41.Value
        Cells(4, 42).Value = textbox42.Value
        Cells(4, 43).Value = textbox43.Value
        Cells(4, 44).Value = textbox44.Value
        Cells(4, 45).Value = textbox45.Value
    
        copySheet.Range("A4:BC4").Copy
            pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
          
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
        
        pasteSheet.Activate
            
          With f.EntireRow
              .Cells(1) = v  
              .Cells(2).value = textbox2.Value
              .Cells(3).Value = textbox3.Value
              .Cells(4).Value = textbox4.Value
              .Cells(5).Value = textbox5.Value
              .Cells(6).Value = textbox6.Value
              .Cells(7).Value = textbox7.Value
              .Cells(8).Value = textbox8.Value
              .Cells(9).Value = textbox9.Value
              .Cells(11).Value = textbox11.Value
              .Cells(12).Value = textbox12.Value
              .Cells(13).Value = textbox13.Value
              .Cells(14).Value = textbox14.Value
              .Cells(17).Value = textbox17.Value
              .Cells(18).Value = textbox18.Value
              .Cells(19).Value = textbox19.Value
              .Cells(20).Value = textbox20.Value
              .Cells(21).Value = textbox21.Value
              .Cells(25).Value = textbox25.Value
              .Cells(26).Value = textbox26.Value
              .Cells(27).Value = textbox27.Value
              .Cells(28).Value = textbox28.Value
              .Cells(29).Value = textbox29.Value
              .Cells(33).Value = textbox33.Value
              .Cells(34).Value = textbox34.Value
              .Cells(35).Value = textbox35.Value
              .Cells(36).Value = textbox36.Value
              .Cells(37).Value = textbox37.Value
              .Cells(41).Value = textbox41.Value
              .Cells(42).Value = textbox42.Value
              .Cells(43).Value = textbox43.Value
              .Cells(44).Value = textbox44.Value
              .Cells(45).Value = textbox45.Value
          End With
      End If
 Else
     Msgbox "not found - '" amp; v amp; "'"
 End If
  

Завершение подзаголовка

Комментарии:

1. Похоже, что Find не найдено v . Убедитесь, что вы также указали LookIn .

2. Возможно, попробуйте установить LookIn аргумент в xlValues .

Ответ №1:

Я думаю, вам не нужно сначала копировать данные в copysheet, а затем вставлять данные в таблицу базы данных..Вы просто можете взять данные из таблицы базы данных. И вы должны использовать цикл for для получения данных (поскольку у вас есть текстовое поле 45) .. И я не понимаю, какова цель f.entirerow …. (этот раздел)? Извините, я хочу прокомментировать сообщение, но у меня недостаточно репутации..