powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel - применить макрос ко всей книге
20 сообщений из 20, страница 1 из 1
Excel - применить макрос ко всей книге
    #38260797
SPR5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал по инструкции .


Т.е. было так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub SummAver()
Range(“D1:D101″).Select
Range(“D101″).Activate
ActiveCell.FormulaR1C1 = “=SUM(R[-100]C:R[-1]C)”
Range(“E1:E101″).Select
Range(“E101″).Activate
ActiveCell.FormulaR1C1 = “=AVERAGE(R[-100]C:R[-1]C)”
ActiveWindow.SmallScroll Down:=18
Range(“D101″).Select
End Sub 



... стало так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub SummAver()

Dim wsheet As Worksheet
For Each wsheet In ActiveWorkbook.Worksheets
Sheets(wsheet.Name).Select

Range(“D1:D101″).Select
Range(“D101″).Activate
ActiveCell.FormulaR1C1 = “=SUM(R[-100]C:R[-1]C)”
Range(“E1:E101″).Select
Range(“E101″).Activate
ActiveCell.FormulaR1C1 = “=AVERAGE(R[-100]C:R[-1]C)”
ActiveWindow.SmallScroll Down:=18
Range(“D101″).Select

Next wsheet

End Sub




Но чуда не происходит. Подскажите, пожалуйста, где я ошибся?
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38260968
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPR5чуда не происходитА какого чуда Вы ждали, копируя текст макроса с низкопробного, непрофильного ресурса?
Каков источник - таков и результат.
Так будет работать:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Sub SummAver()
Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        Range("D101").FormulaR1C1 = "=SUM(R[-100]C:R[-1]C)"
        Range("E101").FormulaR1C1 = "=AVERAGE(R[-100]C:R[-1]C)"
    Next
End Sub
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261020
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge 007, так как ты написал будет работать. Факт. Но фигово :) И явно не так, как задумывалось. Где указание диапазону на лист, в котором прописывать формулы? Опять забыл? :)
SPR5, вот так будет работать для всех листов:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Sub SummAver()
Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        ws.Range("D101").FormulaR1C1 = "=SUM(R[-100]C:R[-1]C)"
        ws.Range("E101").FormulaR1C1 = "=AVERAGE(R[-100]C:R[-1]C)"
    Next
End Sub
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261049
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristОпять забыл?Тяжело забыть то чего не знаешь
Дим, ты же знаешь, что я с VBA на "ты"
Но даже мне понятно, что блог по ссылке - это просто непотребно...

Спасибо за правки, хотя я пока этой разницы не чувствую...
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261059
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергеа, насчет непотребно - можно поспорить. Там в принципе верно написано, просто далеко не оптимально. Как я прочитал - там совет для тех, кто в макросах не понимает и не особо есть время и желание учить. Записал макрос - применил ко всем листам не вдаваясь в нюансы(типа ws.Range). С этой точки зрения там более чем верно все. Другой вопрос - как это применялось. Скорее всего тупо скопировалось с сайта с теми же непотребными кавычками, которые на нем. VBA их просто непонимает и явно появляется ошибка синтаксиса.
Здесь налицо ошибка блогерра в отсутствии оформления кода тегами и ошибка пользователя в бездумном копировании.
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261060
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristСергеаДрогнула рука хирурга :-) Хотел написать Сергей
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261065
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, Дим, спасибо, Всё верно!
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261282
SPR5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub SummAver()
Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets


    ... текстовка моего макроса


    Next
End Sub



Так не работает. Т.е. работает, конечно, но - опять же - только на активной странице.



Может, это из-за того, что "Microsoft Office 2013" (x86)? Но у меня, к сожалению, не осталось ни 2007-го, ни 2010-го, чтобы проверить работоспособность :(
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261284
SPR5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или (как вариант) не работает из-за того, что страницы переименованы? Т.е. стандартные имена "Лист1", "Лист2" и т.д. заменены на нестандартные "Приход", "Вычет", и т.д.?
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261288
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPR5
Код: vbnet
1.
    ... текстовка моего макроса


Так не работает. Т.е. работает, конечно, но - опять же - только на активной странице.Где? Где речёвка то?
А то уже в философию ударяемся - "это Офис виноват"....
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261414
Фотография Serge 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPR5работает только на активной странице
Цикл
Код: vbnet
1.
For Each ws In ActiveWorkbook.Worksheets

перебирает все листы текущей книги, независимо от их названия. Макрос писал в Excel 2013, а работать он будет в любой версии

ЗЫ Я тоже хирург :)
Фразу " я с VBA на "ты" " следует читать как " я с VBA на "ВЫ" "
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38261424
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPR5Так не работает. Т.е. работает, конечно, но - опять же - только на активной странице.Т.е. переписку Вы не читали? Не заметили мои правки к коду Сергея и урок из этого не вынесли? Вполне ведь очевидно, что ошибка как раз в "... текстовка моего макроса". Но именно эту часть Вы считаете абсолютно непогрешимой - во всем виноваты другие строки и офис....
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38262099
SPR5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, я не то что бы "не читал", просто применил так, как увидел.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Sub delete()

Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets

    Rows("1:7").Select
    Selection.delete Shift:=xlUp

    Dim aaa As Range
    Dim bbb As Range
    Application.ScreenUpaaating = False
    Txt1 = "Яблоки"
    Txt2 = "Груши"
    For Each aaa In ActiveSheet.UsedRange.Rows
        
        If Not aaa.Find(Txt1, , xlValues, xlPart) Is Nothing Then
            If bbb Is Nothing Then Set bbb = aaa Else Set bbb = Union(bbb, aaa)
        End If
        
        If Not aaa.Find(Txt2, , xlValues, xlPart) Is Nothing Then
            If bbb Is Nothing Then Set bbb = aaa Else Set bbb = Union(bbb, aaa)
        End If
   
    Next
    If Not bbb Is Nothing Then bbb.EntireRow.delete
    End

Next
End Sub



... и ничего не получил. Т.е. это работает только для одной страницы.
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38262546
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Application.ScreenUpaaating = False

Это работает? o_O
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38262556
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем End ?! Это же немедленное прекращение работы программы.
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38262643
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPR5
Код: vbnet
1.
    For Each aaa In ActiveSheet.UsedRange.Rows


это работает только для одной страницы.Что пишете - то и получаете.
А раз завели ws - так используйте, и будет вам счастье....
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38268182
SPR5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Application.ScreenUpaaating = False

Это работает? o_Oне работает, ибо это я запарился. Там, конечно же, вместо "Application.ScreenUpaaating = False" должно быть "Application.ScreenUpdating = False"


А зачем End ?! Это же немедленное прекращение работы программы.затем, что не ведаю я вообще ничего в том, что творю в VB, потому-то и обратился сюда.



Что пишете - то и получаете.
А раз завели ws - так используйте, и будет вам счастье....А как корректно задействовать "ws" в приведённом выше коде?
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38268451
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPR5А как корректно задействовать "ws" в приведённом выше коде?Мой первый пост с кодом как раз показывает как. Но Вы читали и не видели. Как еще показать - лично я не знаю.
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38269376
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPR5, так должно работать,
обратите внимание на использование Ws в 2-х местах внутри For-Each:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Sub DeleteRows()
  
  ' --> Settings, change to suit
  Const RowsToDel As String = "1:7"
  Const Txt1 As String = "Яблоки"
  Const Txt2 As String = "Груши"
  ' <-- End of settings
  
  Dim Ws As Worksheet
  Dim Rng As Range, x As Range

  Application.ScreenUpdating = False

  For Each Ws In ActiveWorkbook.Worksheets
    Ws.Rows(RowsToDel).Delete Shift:=xlUp
    For Each x In Ws.UsedRange.Rows
      If Not x.Find(Txt1, , xlValues, xlPart) Is Nothing Then
        If Rng Is Nothing Then Set Rng = x Else Set Rng = Union(Rng, x)
      End If
      If Not x.Find(Txt2, , xlValues, xlPart) Is Nothing Then
        If Rng Is Nothing Then Set Rng = x Else Set Rng = Union(Rng, x)
      End If
    Next
    If Not Rng Is Nothing Then
      Rng.EntireRow.Delete
      Set Rng = Nothing
    End If
  Next

  Application.ScreenUpdating = True

End Sub
...
Рейтинг: 0 / 0
Excel - применить макрос ко всей книге
    #38273007
SPR5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZVI
покорнейше Вас благодарю, это именно то, что мне нужно!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel - применить макрос ко всей книге
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]