2013-11-22 2 views
0

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

  • Если пользователь оставляет пустой в текстовом поле, программа остановит макроса вместо создания пустого листа.

  • если пользователь добавляет звездочку в поле поиска текстового поле, программа будет
    создать новый лист только для поиска подстановочных

    strSearch = Application.InputBox("Please enter the search string") 
    
        Worksheets.Add().Name = strSearch 
        Set rg = Sheets("Sheet1").Cells(1).CurrentRegion          
        For a = 1 To rg.Rows.Count                 
        Set rgF = rg.Rows(a).Find(strSearch, , xlValues, xlWhole) 
    
        If Not rgF Is Nothing Then 
        rg.Rows(a).Copy Sheets(strSearch).Range("A60000").End(xlUp).Offset(1, 0) 
    
        Set rgF = Nothing 
        End If 
        Next a 
    
        Application.ScreenUpdating = True 
    
+1

Если пользователь вводит '* Blah *', каково должно быть имя листа? И какие ошибки вы получаете? –

+0

@SiddharthRout они подскажут мне ошибку «Подстрочный без диапазона» после использования кода ниже. – user2837847

+0

Просто чтобы подтвердить, вводит ли пользователь «Sid» в поле ввода, он создаст лист под названием «Сид»? и если пользователь вводит «* Sid *», тогда он будет вызывать ошибку? и что, если пользователь вводит «* Sid»? Опять подскажите ошибку? –

ответ

0

Насколько там как некоторые запрещенные символы, которые не могли быть помещены в имени листа вам нужно сделать что-то вроде этого:

strSearch = Application.InputBox("Please enter the search string") 

if len(strSearch) > 0 then 
    'add new sheet where in name we use the followings symbols 
    '(X) instead of * asterisk 
    '(Q) instead of question marks 
    'and other are possible... 
    Worksheets.Add().Name = replace(replace(strSearch, "*", "(X)"), "?", (Q)) 
else 
    'if there isn't any string provided by user: 
    'do nothing 
end if 
Set rg = Sheets("Sheet1").Cells(1).CurrentRegion  
'...the rest of your code 

Если поиск пользователя для *Blah? йо u получите имя листа как (X)Blah(Q).

Смежные вопросы