Страницы: 1
RSS
Отображеие информации только при печати, соединить несколько макросов в один
 
2 рабочих кода  объединить на одном листе. на одном листе два макроса не работают, 1 формируют инвойс из базы. второй прописывает однотипную информацию. По отдельности работает каждый, Но оба на одном листе не работают. что надо заменить в коде?
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("C2")) Is Nothing Then
If IsEmpty(Target) Then Range("InvTema").ClearContents: Exit Sub
Dim arr(), arr2()
Dim lr As Long, i As Long
Dim sh As Worksheet, sh2 As Worksheet
Set sh = Worksheets("Hesab-Invoys") 
Set sh2 = Worksheets("SATISH") 
k = 1
lr = sh2.Cells(Rows.Count, 1).End(xlUp).Row 
arr = sh2.Range("A6:Q" & lr) 
x = Application.WorksheetFunction.CountIf(sh2.Columns("H:H"), Range("C2")) 
ReDim arr2(1 To x, 2 To 7) 
    For i = LBound(arr) To UBound(arr) 
        If arr(i, 8) = Range("C2") Then '
        
            arr2(k, 2) = arr(i, 10)
            arr2(k, 3) = arr(i, 11)
            arr2(k, 4) = arr(i, 12)
            arr2(k, 5) = arr(i, 13)
            arr2(k, 6) = arr(i, 14)
            arr2(k, 7) = arr(i, 15)
            k = k + 1
        End If
    Next i
Range("InvTema").ClearContents 
Range("B14:G" & UBound(arr2) + 13) = arr2 
End If
End Sub
 
  Private
  Sub Rekvizit()  
  Dim
  iLastRow As Long  
  iLastRow = Cells(Rows.Count, 2).End(xlUp).Row  
  Cells(iLastRow + 7, 2) = "Директор Департамента управления"  
  Cells(iLastRow  + 8, 2) = "собственными активами в РФ ЗАО «…………...»"  
  Cells(iLastRow + 8, 8) = "/……………………….. /"  
  Range(Cells(iLastRow  + 7, 2), Cells(iLastRow + 8, 8)).Font.Bold = True  
  Cells(iLastRow + 9, 2) = "на основании доверенности № 21/12 от 01.09.2012"  
  End
  Sub
 
Объединил, но на работоспособность не проверял

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C2")) Is Nothing Then
        If IsEmpty(Target) Then Range("InvTema").ClearContents: Exit Sub
        Dim arr(), arr2()
        Dim lr As Long, i As Long
        
        Dim sh As Worksheet, sh2 As Worksheet
        Set sh = Worksheets("Hesab-Invoys")
        Set sh2 = Worksheets("SATISH")
        k = 1
        lr = sh2.Cells(Rows.Count, 1).End(xlUp).Row
        arr = sh2.Range("A6:Q" & lr)
        x = Application.WorksheetFunction.CountIf(sh2.Columns("H:H"), Range("C2"))
        ReDim arr2(1 To x, 2 To 7)
        For i = LBound(arr) To UBound(arr)
            If arr(i, 8) = Range("C2") Then          
                arr2(k, 2) = arr(i, 10)
                arr2(k, 3) = arr(i, 11)
                arr2(k, 4) = arr(i, 12)
                arr2(k, 5) = arr(i, 13)
                arr2(k, 6) = arr(i, 14)
                arr2(k, 7) = arr(i, 15)
                k = k + 1
            End If
        Next i
        Range("InvTema").ClearContents
        Range("B14:G" & UBound(arr2) + 13) = arr2
    End If

    'добавлено
    Dim iLastRow As Long
    iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
    Cells(iLastRow + 7, 2) = "Директор Департамента управления"
    Cells(iLastRow + 8, 2) = "собственными активами в РФ ЗАО «…………...»"
    Cells(iLastRow + 8, 8) = "/……………………….. /"
    Range(Cells(iLastRow + 7, 2), Cells(iLastRow + 8, 8)).Font.Bold = True
    Cells(iLastRow + 9, 2) = "на основании доверенности № 21/12 от 01.09.2012"
End Sub
Изменено: New - 15.02.2021 13:01:13
 
так
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Cells.Count > 1 Then Exit Sub
  If IsEmpty(Target) Then Range("InvTema").ClearContents: Exit Sub
  If Intersect(Target, Range("C2")) Is Nothing Then Exit Sub
  Dim arr(), arr2(), lr&, i&, j&, sh As Worksheet, sh2 As Worksheet
  Set sh = Worksheets("Hesab-Invoys"): Set sh2 = Worksheets("SATISH")
  lr = sh2.Cells(Rows.Count, 1).End(xlUp).Row
  arr = sh2.Range("A6:Q" & lr)
  x = Application.WorksheetFunction.CountIf(sh2.Columns("H:H"), Range("C2"))
  ReDim arr2(1 To x, 2 To 7): k = 1
  For i = LBound(arr) To UBound(arr)
    If arr(i, 8) = Range("C2") Then '
      For j = 2 To 7: arr2(k, j) = arr(i, j + 8): Next:   k = k + 1
    End If
  Next i
  Range("InvTema").ClearContents
  Range("B14:G" & UBound(arr2) + 13) = arr2:  Rekvizit
End Sub
  
Private Sub Rekvizit()
  Dim iLastRow As Long
  iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
  Cells(iLastRow + 7, 2) = "Директор Департамента управления"
  Cells(iLastRow + 8, 2) = "собственными активами в РФ ЗАО «…………...»"
  Cells(iLastRow + 8, 8) = "/……………………….. /"
  Range(Cells(iLastRow + 7, 2), Cells(iLastRow + 8, 8)).Font.Bold = True
  Cells(iLastRow + 9, 2) = "на основании доверенности № 21/12 от 01.09.2012"
End Sub
пойдет?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
пойдет?
IDEALNO))) SPASIBO

P.S. У меня нет русской клавиатуры Поэтому приходится наговаривать на поисковике текст
 
Цитата
New написал:
Объединил, но на работоспособность не проверял
Spasibo. Vidayet owibki. no pokapayus
 
Цитата
eqo03 написал:
У меня нет русской клавиатуры
Может есть смысл установить виртуальную? )
 
Нет у меня  v стандартных этой "Экранная клавиатура") Поискать надо. Спасибо.
при смене номера инвойса он создаёт новую запись. Итак энное количество. а нужна только одна подпись
 
Цитата
eqo03 написал:
Нет у меня  v стандартных этой "Экранная клавиатура")
Должно быть.  (WIN+CTRL+O)
Изменено: sokol92 - 15.02.2021 14:02:21
Владимир
 
Цитата
sokol92 написал:  Должно быть .
непривычно. но установила виртуальную клаву. осталось разобраться с повторяющейся подписью. макрос Ігор Гончаренко идеальный. но при смене номера инвойса создается дополнительная подпись. как избавиться от повтора?
 
между этими строками
 If Intersect(Target, Range("C2")) Is Nothing Then Exit Sub
 Dim arr(), arr2(), lr&, i&, j&, sh As Worksheet, sh2 As Worksheet
вставьте строку:
Код
  If [c2] = "sgntr" Then Rekvizit: Exit Sub
эту строку
 Range("B14:G" & UBound(arr2) + 13) = arr2:  Rekvizit
пишете так:
Код
  Range("B14:G" & UBound(arr2) + 13) = arr2
когда в С2 напишете sgntr и нажмете Enter - добавятся подписи 1 раз)
Цитата
У меня нет русской клавиатуры Поэтому приходится наговаривать на поисковике текст
это: "Директор Департамента управления"
то же наговаривали?))
Изменено: Ігор Гончаренко - 15.02.2021 14:36:21
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
огда в С2 напишете sgntr и нажмете Enter - добавятся подписи 1 паз)
не получается. щас подписи вообще нет. наверное делаю что то не так?
 
Цитата
Ігор Гончаренко написал:
это: "Директор Департамента управления"то же наговаривали?))
это был уже готовый макрос с этого же ресурса.)))
 
Цитата
eqo03 написал:
не получается.
при наличии файла можно посмотреть что не получается
гадать без файла что там может не получаться - не интересно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
при наличии файла можно посмотреть что не получается
вот оно чудо природы
 
см.вложение
Изменено: Ігор Гончаренко - 15.02.2021 15:14:58
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал: см.вложение
может у меня другая версия экзеля? нет подписи
 
возможно Excel не той системы
может, с руками что-то не так...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
eqo03: у меня другая версия экзеля
судя по скрину, у вас 2003
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
судя по высланному .xlsm
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Версия Excel примера из #14 - 2007. Вы на одном и том же компьютере экпериментируете?  
Владимир
 
да это мой комп. на нем и работаю
 
Цитата
Jack Famous написал:
судя по скрину, у вас 2003
А не 2007?  
 
Цитата
Юрий М написал:
А не 2007?  
2007 - точно.и на другом компе проверила. при первом макросе (#3) подпись появляется каждый раз при смене номера инвойса.и так много раз. а нужно всего одна подпись. в данном варианте подпись не появляется.можно как то подкорректировать код. Код хороший.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Cells.Count > 1 Then Exit Sub
  If IsEmpty(Target) Then Range("InvTema").ClearContents: Exit Sub
  If Intersect(Target, Range("C2")) Is Nothing Then Exit Sub
  If [c2] = [g2] Then Rekvizit: Exit Sub
  Dim arr(), arr2(), lr&, i&, j&, sh As Worksheet, sh2 As Worksheet
  Set sh = Worksheets("Hesab-Invoys"): Set sh2 = Worksheets("SATISH")
  lr = sh2.Cells(Rows.Count, 1).End(xlUp).Row
  arr = sh2.Range("A6:Q" & lr)
  x = Application.WorksheetFunction.CountIf(sh2.Columns("H:H"), Range("C2"))
  ReDim arr2(1 To x, 2 To 7): k = 1
  For i = LBound(arr) To UBound(arr)
    If arr(i, 8) = Range("C2") Then '
      For j = 2 To 7: arr2(k, j) = arr(i, j + 8): Next:   k = k + 1
    End If
  Next i
  Range("InvTema").ClearContents
  Range("B14:G" & UBound(arr2) + 13) = arr2
End Sub
   
Private Sub Rekvizit()
  Dim iLastRow As Long
  iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
  Cells(iLastRow + 7, 2) = "Äèðåêòîð Äåïàðòàìåíòà óïðàâëåíèÿ"
  Cells(iLastRow + 8, 2) = "ñîáñòâåííûìè àêòèâàìè â ÐÔ ÇÀÎ «…………...»"
  Cells(iLastRow + 8, 6) = "/……………………….. /"
  Range(Cells(iLastRow + 7, 2), Cells(iLastRow + 8, 8)).Font.Bold = True
  Cells(iLastRow + 9, 2) = "íà îñíîâàíèè äîâåðåííîñòè ¹ 21/12 îò 01.09.2012"
End Sub

 
Изменено: eqo03 - 16.02.2021 11:34:22
 
а если открыть высланный мною файл и в С2 выбрать Qaimə nömrəsi?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Добрый день. записала процедуру открытия файла https://cloud.mail.ru/public/sv1p/DETgbHfi7 Если вас не затруднит просмотрите пожалуйста
 
читайте по губам:
а если в С2 выбрать Qaimə nömrəsi
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
ой все ясно. работает. прошу прощение. да работает спасибо. тема закрыта
Страницы: 1
Наверх