Страницы: 1
RSS
VBA. НЕ работает макрос проверки имен листов, \макрос проверяет наличие дублей имен и при выполнении условий сбрасывается на серединге
 
Коллеги, добрый день!

Обращаюсь к вам за помощью. Учусь писать макросы, но случился затык на проигрыше макроса.

Его суть -
               1. Создать листы с определенными названия Name Source & Name Change - это работает.
               2. Перевести формулы в значения - это работает.
               3. Перед тем как добавить новые листы,  необходимо проверить существование аналогичных и выдать сообщение - либо не существует и создать, либо существует и переименовать. - 1ая проверка проходит,
Код
 If Not Sh_Exist(ActiveWorkbook, cPhChName + " source") Then
       ' ActiveWorkbook.Sheets.Add(, ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)).Name = "Новый лист"
       MsgBox ("лист не существует")
       Sheets("Chain Info (КАМ) (2)").Select
       Sheets("Chain Info (КАМ) (2)").Name = cPhChName + " source" '"Magnit source"
    Else
       MsgBox ("лист <" + cPhChName + " source" + "> существует. переименуйте!")  
а вот на второй проверке выходит ошибка.

Буду признательна за помощь и разъяснения


Весь код макроса ниже:
Код
Sub KAM_Template()
'
' KAM_Template Макрос
'

'
    Sheets("Chain Info (КАМ)").Select
    cPhChName = Range("E1").Value   ' = "Magnit"
    
    Sheets("Chain Info (КАМ)").Copy Before:=Sheets(12)
    
    'заменяем формулы на значения
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    '''''''''''''''''''''''''''''''''''
    
    Sheets("Chain Info (КАМ) (2)").Copy Before:=Sheets(13)
    
    'перед переименованием провести проверку названий Листов
    '    Sub Add_New_Sheet()
    If Not Sh_Exist(ActiveWorkbook, cPhChName + " source") Then
       ' ActiveWorkbook.Sheets.Add(, ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)).Name = "Новый лист"
       MsgBox ("лист не существует")
       Sheets("Chain Info (КАМ) (2)").Select
       Sheets("Chain Info (КАМ) (2)").Name = cPhChName + " source" '"Magnit source"
    Else
       MsgBox ("лист <" + cPhChName + " source" + "> существует. переименуйте!")
      ' Exit Sub
    ' End If
    ' End Sub
    If Not Sh_Exist(ActiveWorkbook, cPhChName + " changes") Then
       MsgBox ("лист не существует")
       Sheets("Chain Info (КАМ) (2)").Select
       Sheets("Chain Info (КАМ) (2)").Name = cPhChName + " changes" '"Magnit changes"
    Else
       MsgBox ("лист <" + cPhChName + " changes" + "> существует. переименуйте!")
       Exit Sub
    
     End If
    
    Range("H17").Select
    End Sub

'Функция проверки листов

Function Sh_Exist(wb As Workbook, sName As String) As Boolean
    Dim wsSh As Worksheet
    On Error Resume Next
    Set wsSh = wb.Sheets(sName)
    Sh_Exist = Not wsSh Is Nothing
End Function


Sub Macross_give_name()
'
' Macross_give_name Макрос
'

'
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Magnit"
    Range("E2").Select
    ActiveWorkbook.Save
    Sheets("Template source").Select
    Range("D1").Select
    Sheets("Template source").Select
    Sheets("Chain Info (КАМ)").Select
    ActiveWindow.ScrollWorkbookTabs Sheets:=-1
    Range("E1").Select
    Sheets("Template Difference").Select
    Range("H4").Select
End Sub
 
Цитата
написал:
а вот на второй проверке выходит ошибка
ни ошибки, ни файла...
О какой ошибке речь? Что End If не хватает? Так добавьте туда, где ему положено быть.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Raya, здравствуйте
Код
Для сцепки используйте оператор "&", а не "+"
Изменено: Jack Famous - 25.07.2022 12:07:24
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Дмитрий(The_Prist) Щербаков, Jack Famous,

Спасибо, разобралась ) он дважды ссылался на одby и тот же лист, поэтому и выдавал ошибку.

Jack Famous, заменила на & - работает)
Страницы: 1
Наверх