Как сравнить текст списка с именем листа в VBA?

#excel #vba #userform

#excel #vba #пользовательская форма

Вопрос:

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

введите описание изображения здесь

Код следующий:

 Private Sub CommandButton1_Click()
Option Explicit
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
        'this line i could not manage
        If ws.Name Like "Tel*" Then
        Sheets("Tabella Riepilogativa").Select
        End If
        Else: MsgBox "Phone number was not found"
    Next
End Sub

Private Sub Label1_Click()

End Sub

Private Sub ListBox1_Click()

End Sub
  

Может кто-нибудь помочь с этим, пожалуйста?

Комментарии:

1. может быть if StrComp(ws.name, textbox1,vbtextcompare) = 0 then

2. Почему вы используете a listbox для ввода пользователями? Не могли бы вы textbox вместо этого использовать a?

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

Ответ №1:

Option Explicit Принадлежит в верхней части файла.

Чтобы найти лист с именем "Tel{whatever the user entered in a TextBox}" :

 Private Sub CommandButton1_Click()

Dim ws As Worksheet, wsFound As Worksheet, searchFor As String

searchFor = "TEL" amp; UCase$(Trim$(TextBox1.Text))

For Each ws In ThisWorkbook.Sheets
    If UCase$(ws.Name) = searchFor Then
        Set wsFound = ws
        Exit For
    End If
Next

If wsFound Is Nothing Then
    MsgBox "Not Found (I should probably be a label to save the user an unnecessary click)"
Else
    wsFound.Select
End If

End Sub
  

Комментарии:

1. Спасибо! Скрипт работает отлично. Единственная проблема заключается в том, что он всегда говорит «Не найден», даже если текстовое поле и имя листа были равны. Другое дело, можно ли выполнить ту же операцию и с числами или просто с текстом?

2. Если пользователь введет 123, он выберет лист с именем «tel123», если вы увидите окно сообщения, в котором не найдено совпадение