Автоматизированная форма ввода данных

#excel #vba #forms #data-entry

#excel #vba #формы #ввод данных

Вопрос:

Пытаюсь получить помощь, чтобы выяснить, почему моя форма данных неправильно связана с моей базой данных. Я очень новичок в этом и несколько раз пытался следовать руководству, чтобы получить то, что мне было нужно, но пройти весь путь, и независимо от того, что я настраиваю, у меня возникают проблемы.

Вот как выглядит форма: введите описание изображения здесь

Подключен к базе данных Excel с 12 столбцами. Только 2 листа в рабочей книге (главная и база данных) продолжают получать ошибку ниже:

  1. Ошибка времени выполнения ‘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"