Функция «SHOW» возвращает ошибку на Ma c OS X - PullRequest
0 голосов
/ 03 марта 2020

Я создаю автоматизированную форму ввода данных в Excel. У меня первая часть написана в Excel на Windows, потому что Ma c не поддерживает "UserForm". Я попытался проверить мою форму пользователя на Ma c, и я получаю эту ошибку:

«Ошибка времени выполнения» 380 Не удалось установить свойство RowSource. Неверное значение свойства. "

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

Я приложил скриншот того, как выглядит моя форма, какую ошибку я получаю, и код, в котором я есть ошибка. Также код здесь:


Sub Show_Form()
    frmForm.Show
End Sub

Я должен отметить, что моя форма пользователя отлично работает на Windows.


Полный код из модуля 1:

Sub Reset()

    Dim iRow As Long
    iRow = [Counta(Database!A:A)] ' idetifying the last row

    With frmForm

        .txtID.Value = ""
        .txtName.Value = ""
        .optMale.Value = False
        .optFemale.Value = False


        .cmbDepartment.Clear

        .cmbDepartment.AddItem "HR"
        .cmbDepartment.AddItem "Operation"
        .cmbDepartment.AddItem "Training"
        .cmbDepartment.AddItem "Quality"

        .txtCity.Value = ""
        .txtCountry.Value = ""

        .lstDatabase.ColumnCount = 9
        .lstDatabase.ColumnHeads = True

        .lstDatabase.ColumnWidths = "30,60,75,40,60,45,55,70,70"

        If iRow > 1 Then

            .lstDatabase.RowSource = "Database!A2:I" & iRow
        Else

            .lstDatabase.RowSource = "Database!A2:I2"
        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) = IIf(frmForm.optFemale.Value = True, "Female", "Male")

        .Cells(iRow, 5) = frmForm.cmbDepartment.Value

        .Cells(iRow, 6) = frmForm.txtCity.Value

        .Cells(iRow, 7) = frmForm.txtCountry.Value

        .Cells(iRow, 8) = Application.UserName

        .Cells(iRow, 9) = [Text(Now(), "DD-MM-YYYY HH:mm:SS")]


    End With

End Sub

Sub Show_Form()

    frmForm.Show

End Sub

Полный код от userForm

Private Sub cmdReset_Click()

    Dim msgValue As VbMsgBoxResult

    msgValue = MsgBox("Do you want to Reset the form?", vbYesNo + vbInformation, "Confirmation")

    If msgValue = vbNo Then Exit Sub

    Call Reset


End Sub

Private Sub cmdSave_Click()

    Dim msgValue As VbMsgBoxResult

    msgValue = MsgBox("Do you want to save the data?", vbYesNo + vbInformation, "Confirmation")

    If msgValue = vbNo Then Exit Sub

    Call Submit
    Call Reset

End Sub

Private Sub UserForm_Initialize()

    Call Reset

End Sub

enter image description here

enter image description here

enter image description here

1 Ответ

0 голосов
/ 16 апреля 2020

Вы забыли создать рабочую таблицу базы данных

[enter image description here]

...