Проверьте дубликаты на нескольких текстовых полях формы пользователя - PullRequest
0 голосов
/ 10 февраля 2020

Я все еще работаю над улучшением своего библиотечного списка книг. Это предыдущий вопрос, чтобы проверить дублирующее значение при вводе данных пользователем ({ ссылка }).

Пока я тестирую это, я думаю, что лучше и быстрее создать «темплист» на листе 2 , затем нажмите кнопку на пользовательской форме, чтобы получить все детали вместо того, чтобы вводить или копировать / вставлять в текстовое поле пользовательской формы. Итак,

Private Sub GetButton_Click()
    With Me
    .TitleTextBox.Value = Cells(ActiveCell.Row, "B").Value
    .AuthorTextBox.Value = Cells(ActiveCell.Row, "C").Value
    .CopyTextBox.Value = Cells(ActiveCell.Row, "D").Value
    .ISBNTextBox.Value = Cells(ActiveCell.Row, "E").Value
    .CallNoTextBox.Value = Cells(ActiveCell.Row, "F").Value
    .PublicationTextBox.Value = Cells(ActiveCell.Row, "G").Value
 End With
 ''Selection.EntireRow.Font.Strikethrough = True
End Sub

Затем, когда все текстовые поля заполнены, я хочу проверить наличие дублирующих данных в основном списке. Итак, я пытаюсь что-то вроде ниже:

Private Sub CheckButton_Click()
Dim FoundCell As Range
Dim Search As String
Dim ws As Worksheet
Set ws = Worksheets("booklist")
Search = TitleTextBox.Text
Set FoundCell = ws.Columns(2).Find(Search, LookIn:=xlValues, Lookat:=xlWhole)
On Error GoTo ErrMsg
If FoundCell Is Nothing Then
    Title_checker.Caption = ChrW(&H2713)
Else
Title_checker.Caption = "Duplicate" & " " & FoundCell.Address

End If
FoundCell.Select
Exit Sub
ErrMsg:
MsgBox "Select booklist sheet!"
End Sub

Я учился на предыдущем вопросе, я могу «найти» только один раз каждый раз. Но я хочу проверить три данных на наличие дублирующегося значения, которое является заголовком в столбце B, ISBN в столбце E и CallNo в столбце F. Я не уверен, как реализовать этот ответ ({ ссылка }) в мой предыдущий вопрос в мой новый «CheckButton». Может кто-нибудь помочь?

1 Ответ

1 голос
/ 10 февраля 2020

Использование того же Sub из предыдущего вопроса:

Private Sub CheckButton_Click()

    DupCheck TitleTextBox.Text, 2, Title_checker 

    DupCheck ISBNTextBox.Text, 5, ISBN_checker

    DupCheck CallNoTextBox.Text, 6, CallNo_checker

End Sub

Sub DupCheck(txt, ColNo As Long, theLabel As Object)
    Dim m
    With Worksheets("booklist")
        m = Application.Match(txt, .Columns(ColNo), 0)
        If Not IsError(m) Then 
            theLabel.Caption = "Duplicate" & " " & .Cells(m, ColNo).Address
            .Activate         '<< added: select the sheet
            .Rows(m).Select
        Else
            theLabel.Caption = ChrW(&H2713)
        End If
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...