#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 …. (этот раздел)? Извините, я хочу прокомментировать сообщение, но у меня недостаточно репутации..