#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», если вы увидите окно сообщения, в котором не найдено совпадение