Как преобразовать числовое значение в строку в моем коде? - PullRequest
0 голосов
/ 20 декабря 2018

Приведенный ниже код создает копию мастер-листа для каждой из ячеек в списке (с именем «Splitcode»), затем фильтрует первый столбец в данных (с именем «MasterData») и удаляет все строки, которые неэта клетка в нихи циклически повторяется до тех пор, пока лист не будет создан для каждой ячейки.

Код отлично работает с текстовыми значениями в столбце 1 и в списке.но он не будет работать с числовыми значениями (например, номерами счетов).

Мне сказали, что я должен добавить функцию CStr (), но я никогда не использовал ее раньше, поэтому я не знаю, гдечтобы точно добавить его.

Sub SplitandFilterSheet()    
  Dim Splitcode As Range    

Sheets("Master").Select    
Set Splitcode = Range("Splitcode")    
For Each Cell In Splitcode    
    Sheets("Master").Copy After:=Worksheets(Sheets.Count)    
    ActiveSheet.Name = Cell.Value    

    With ActiveWorkbook.Sheets(Cell.Value).Range("MasterData")    
        .AutoFilter Field:=1, Criteria1:="<>" & Cell.Value,Operator:=xlFilterValues    
        .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete    
    End With    

    ActiveSheet.AutoFilter.ShowAllData    
Next Cell    
End Sub    

1 Ответ

0 голосов
/ 26 декабря 2018

Учтите это: CStr( expression )

Dim LValue As String
LValue = CStr(8)

Переменная LValue теперь будет содержать строковое значение "8"

Я вижу, что у вас есть Cell.Value в 3 местах.Кроме того, проверьте эту ссылку.

https://www.excel -easy.com / examples / number-text-filters.html

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

ActiveSheet.Range("$A$1:$I$" & lines).Offset(1, 0).SpecialCells _
    (xlCellTypeVisible).EntireRow.Delete
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...