Ошибка времени выполнения 13 Несовпадение типов в поле со буквенно-цифровыми данными - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь настроить форму ввода обновленных данных.Как я могу перейти от целочисленного комбинированного окна с только числовыми значениями к типу данных, используя строковое или длинное комбинированное окно с буквенно-цифровыми значениями?

Private Sub UserForm_Activate()

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Employee Details")
Dim i As Integer

Me.UsernameComboBox.Clear
Me.UsernameComboBox.AddItem ""

For i = 11 To sh.Range("B" & Application.Rows.Count).End(xlUp).Row
    Me.UsernameComboBox.AddItem sh.Range("B" & i).Value
Next i

End Sub

Private Sub UsernameComboBox_Change()

If Me.UsernameComboBox <> "" Then

    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Employee Details")
    Dim i As Integer

    i = Application.Match(VBA.CLng(Me.UsernameComboBox.Value), sh.Range("B:B"), 0)

    Me.NameTextBox = sh.Range("A" & i).Value
    Me.EmailTextBox = sh.Range("C" & i).Value
    Me.BirthdateTextBox = sh.Range("D" & i).Value
    Me.NationalIDTextBox = sh.Range("E" & i).Value
    Me.EmpIDTextBox = sh.Range("R" & i).Value
    Me.DeptTextBox = sh.Range("V" & i).Value

    If sh.Range("Y" & i).Value = "Male" Then Me.MaleOptionButton.Value = True
    If sh.Range("Y" & i).Value = "Female" Then Me.FemaleOptionButton.Value = True

    Me.StatusComboBox = sh.Range("X" & i).Value
    Me.CitizenshipComboBox = sh.Range("Z" & i).Value
    Me.EthnicityComboBox = sh.Range("F" & i).Value

End If

End Sub

1 Ответ

0 голосов
/ 02 января 2019

Добро пожаловать на SO.Предполагая, что вы не хотите менять числовые значения в столбце B на текстовые или использовать другой столбец с формулой =Text(B11,"#"), может быть легко использовать обходной путь Find.Может попробовать

    Dim i As Integer
    Dim FndRng As Range, c As Range

    'i = Application.Match(Me.UsernameComboBox.Value, Sh.Range("B:B"), 0)
    Set FndRng = Sh.Range("B11:B" & Sh.Range("B" & Application.Rows.Count).End(xlUp).Row)
    Set c = FndRng.Find(Me.UsernameComboBox.Value, , LookIn:=xlValues)
    If Not c Is Nothing Then
        i = c.Row
        Else
        MsgBox "Not found"
        Exit Sub
    End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...