#excel #vba #forms #data-entry
#excel #vba #формы #ввод данных
Вопрос:
Пытаюсь получить помощь, чтобы выяснить, почему моя форма данных неправильно связана с моей базой данных. Я очень новичок в этом и несколько раз пытался следовать руководству, чтобы получить то, что мне было нужно, но пройти весь путь, и независимо от того, что я настраиваю, у меня возникают проблемы.
Вот как выглядит форма: введите описание изображения здесь
Подключен к базе данных Excel с 12 столбцами. Только 2 листа в рабочей книге (главная и база данных) продолжают получать ошибку ниже:
- Ошибка времени выполнения ‘380’ «Не удалось установить свойство RowSource. Недопустимое значение свойства.» В области «База данных» должен быть мини-предварительный просмотр формы, но он не отображается.
Вот мой код:
Option Explicit
Sub Reset()
Dim iRow As Long
iRow = [Counta(Database!A:A)] 'identifies the last row
With frmForm
.txtID.Value = " "
.txtName.Value = " "
.txtCostc.Value = " "
.txtDept.Value = " "
.txtPay.Value = " "
.txtSdate.Value = " "
.txtSuper.Value = " "
.optCWS.Value = False
.optFWS.Value = False
.lstDatabase.ColumnCount = 12
.lstDatabase.ColumnHeads = True
.lstDatabase.ColumnWidths = "30,60,75,40,60,45,55,60,60,60,60"
If iRow > 1 Then
.lstDatabase.RowSource = "Database!A2:K" amp; iRow
Else
.lstDatabase.RowSource = "Database!A2:K"
End If
End With
End Sub
Sub Submit()
Dim sh As Worksheet
Dim iRow As Long
Set sh = ThisWorkbook.Sheets("Database")
iRow = [Counta(Database!A:A] 1
With sh
.Cells(iRow, 1) = iRow - 1
.Cells(iRow, 2) = frmForm.txtID.Value
.Cells(iRow, 3) = frmForm.txtName.Value
.Cells(iRow, 4) = frmForm.txtSuper.Value
.Cells(iRow, 5) = frmForm.txtDept.Value
.Cells(iRow, 6) = IIf(frmForm.optFWS.Value, "S09996", "S09992")
.Cells(iRow, 7) = IIf(frmForm.optCWS.Value, "S09992", "S09996")
.Cells(iRow, 8) = frmForm.txtCostc.Value
.Cells(iRow, 9) = frmForm.txtSdate.Value
.Cells(iRow, 10) = frmForm.txtPay.Value
.Cells(iRow, 11) = Application.UserName
.Cells(iRow, 12) = [Text(Now(), "DD-MM-YYY HH:MM:SS")]
End With
End Sub
Sub Show_Form()
frmForm.Show
End Sub
Отладчик продолжает переводить меня к части показать форму:
Кто-нибудь знает, что я делаю не так с этим?
Комментарии:
1. Установите для параметра ошибки VBA значение «Сбой в модуле класса», и вы увидите, в чем проблема.
Ответ №1:
Ошибка VBA сама по себе довольно сложна, говоря что-то о Rowsource Property
. В вашем коде ошибка должна быть здесь:
.lstDatabase.RowSource = "Database!A2:K"
очевидно, что чего-то не хватает после K
, например:
.lstDatabase.RowSource = "Database!A2:K1"