Добрый день многоуважаемые форумчане! Возможно ли как то улучшить макрос, потому как данный макрос записывал McroRecorder. [vba]
Код
Sub Макрос1() ' Макрос1 Макрос Range("B15:I49,K2:K10,P2:P10").Select Range("P2").Activate Selection.ClearContents Sheets("2").Select ActiveWindow.SmallScroll Down:=-24 Range("B15:I49,K2:K10,P2:P10").Select Range("P2").Activate Selection.ClearContents Sheets("3").Select ActiveWindow.SmallScroll Down:=-12 Range("B15:I49,K2:K10,P2:P10").Select Range("P2").Activate Selection.ClearContents End Sub
[/vba] В файле имеется 31 лист (по типу это даты месяца) и хотелось чтоб именно с этих листов удалялись значения из диапазонов: B15:I49,K2:K10,P2:P10 Помогите пожалуйста, заранее спасибо... То что это как то так: [vba]
Код
Sub Макрос1() Range("B15:I49,K2:K10,P2:P10").ClearContents End Sub
[/vba] Но как быть с листами
Добрый день многоуважаемые форумчане! Возможно ли как то улучшить макрос, потому как данный макрос записывал McroRecorder. [vba]
Код
Sub Макрос1() ' Макрос1 Макрос Range("B15:I49,K2:K10,P2:P10").Select Range("P2").Activate Selection.ClearContents Sheets("2").Select ActiveWindow.SmallScroll Down:=-24 Range("B15:I49,K2:K10,P2:P10").Select Range("P2").Activate Selection.ClearContents Sheets("3").Select ActiveWindow.SmallScroll Down:=-12 Range("B15:I49,K2:K10,P2:P10").Select Range("P2").Activate Selection.ClearContents End Sub
[/vba] В файле имеется 31 лист (по типу это даты месяца) и хотелось чтоб именно с этих листов удалялись значения из диапазонов: B15:I49,K2:K10,P2:P10 Помогите пожалуйста, заранее спасибо... То что это как то так: [vba]
Код
Sub Макрос1() Range("B15:I49,K2:K10,P2:P10").ClearContents End Sub
and_evg, спасибо за ответ... И прошу прощение за то что файл не приложил (((( думал возможно это и без него Но у меня не получается ели я применяю ваш макрос [vba]
and_evg, спасибо за ответ... И прошу прощение за то что файл не приложил (((( думал возможно это и без него Но у меня не получается ели я применяю ваш макрос [vba]
sboy, да конечно имеется еще один лист (((( скорее всего поэтому и не получилось если я применил другой код Может быть так вот: [vba]
Код
For iList = 1 To 30 Worksheets(iList).Activate Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("2").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("3").Range("B15:I49,K2:K10,P2:P10").ClearContents Next End Sub
[/vba]
sboy, да конечно имеется еще один лист (((( скорее всего поэтому и не получилось если я применил другой код Может быть так вот: [vba]
Код
For iList = 1 To 30 Worksheets(iList).Activate Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("2").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("3").Range("B15:I49,K2:K10,P2:P10").ClearContents Next End Sub
Sub Очистить_Записи() Range("B15").Activate Sheets(Array("1", "2", "3", "4")).Select Range("K2:K10,P2:P10,B15:I48").Select Selection.ClearContents End Sub
[/vba]
[vba]
Код
Sub Очистить_Записи() Range("B15").Activate Sheets(Array("1", "2", "3", "4")).Select Range("K2:K10,P2:P10,B15:I48").Select Selection.ClearContents End Sub
and_evg, ваш код работает на УРА А вот мой очищает но с ерор: [vba]
Код
Sub Очистить_Записи() For iList = 1 To 30 Worksheets(iList).Activate Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("2").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("3").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("4").Range("B15:I49,K2:K10,P2:P10").ClearContents Next End Sub
[/vba] АААА возможно что я указал цикл 1 30 а сам прописываю 4-е листа ((((( Спасибо вам
and_evg, ваш код работает на УРА А вот мой очищает но с ерор: [vba]
Код
Sub Очистить_Записи() For iList = 1 To 30 Worksheets(iList).Activate Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("2").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("3").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("4").Range("B15:I49,K2:K10,P2:P10").ClearContents Next End Sub
[/vba] АААА возможно что я указал цикл 1 30 а сам прописываю 4-е листа ((((( Спасибо вамlebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал lebensvoll - Четверг, 28.09.2017, 15:12
АААА возможно что я указал цикл 1 30 а сам прописываю 4-е листа (((((
Да не все ровно когда делаешь именно вот так вот [vba]
Код
Sub Очистить_Записи() For iList = 1 To 4 Worksheets(iList).Activate Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("2").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("3").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("4").Range("B15:I49,K2:K10,P2:P10").ClearContents Next End Sub
[/vba]
вот смотрите файл
Да точно в этом и ошибка у меня получилась (((((
Цитата
АААА возможно что я указал цикл 1 30 а сам прописываю 4-е листа (((((
Да не все ровно когда делаешь именно вот так вот [vba]
Код
Sub Очистить_Записи() For iList = 1 To 4 Worksheets(iList).Activate Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("2").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("3").Range("B15:I49,K2:K10,P2:P10").ClearContents Sheets("4").Range("B15:I49,K2:K10,P2:P10").ClearContents Next End Sub
Это обращение к листу по его индексу, а вы подразумеваете что обращаетесь по имени. Учтите это! Иначе постираете не на тех листах которых нужно!and_evg
Sub Очистить_Записи() For Each sh In ThisWorkbook.Sheets If Val(sh.Name) > 0 Then sh.Range("B15:I49,K2:K10,P2:P10").ClearContents Next End Sub
[/vba]
Нужно чтоб удалились значения еще с одного листа, но ЛИСТ уже называется: "Списание с завода" Я конечно же в начале произвел действие записью кода получается так [vba]
Код
Sheets("Списание с завода").Select Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13").Select Selection.ClearContents
[/vba] Но как дополнить Ваш код более правильно сообразить не могу или же приходится использовать два макроса на одно действие :'( на разных только листах
sboy, прошу прощение а как дополнить Ваш макрос!?
[vba]
Код
Sub Очистить_Записи() For Each sh In ThisWorkbook.Sheets If Val(sh.Name) > 0 Then sh.Range("B15:I49,K2:K10,P2:P10").ClearContents Next End Sub
[/vba]
Нужно чтоб удалились значения еще с одного листа, но ЛИСТ уже называется: "Списание с завода" Я конечно же в начале произвел действие записью кода получается так [vba]
Код
Sheets("Списание с завода").Select Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13").Select Selection.ClearContents
[/vba] Но как дополнить Ваш код более правильно сообразить не могу или же приходится использовать два макроса на одно действие :'( на разных только листахlebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал lebensvoll - Пятница, 23.03.2018, 14:46
Добрый день. 1. В листе "Списание с завода" у Вас другие диапазоны, чем в листах с числами? 2. кроме листов с числами и "Списание с завода" еще листы есть?
Добрый день. 1. В листе "Списание с завода" у Вас другие диапазоны, чем в листах с числами? 2. кроме листов с числами и "Списание с завода" еще листы есть?sboy
sboy, да!!! Я сижу смотрю, читаю и думаю что нужно объявить переменную (если я все верно понимаю) так еще и не одну. В начале перенс сам код из "модуля" в "Эту книгу", далее немного исправил Ваш код (вроде данные очистились код сработал): [vba]
[/vba] А сейчас сижу и ДУМАЮ "с ГУГЛОМ" как же мне указать еще одну переменную в этом же коде но на действие (того же самого "очистить диапазон" но на другом листе) [vba]
Код
Sheets("Списание с завода").Select Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13").Select Selection.ClearContents
[/vba] Думал так но увы [vba]
Код
If Val(sh.Name) Like "Списание с завода" Then sh.Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13").ClearContents
[/vba]
sboy, да!!! Я сижу смотрю, читаю и думаю что нужно объявить переменную (если я все верно понимаю) так еще и не одну. В начале перенс сам код из "модуля" в "Эту книгу", далее немного исправил Ваш код (вроде данные очистились код сработал): [vba]
[/vba] А сейчас сижу и ДУМАЮ "с ГУГЛОМ" как же мне указать еще одну переменную в этом же коде но на действие (того же самого "очистить диапазон" но на другом листе) [vba]
Код
Sheets("Списание с завода").Select Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13").Select Selection.ClearContents
[/vba] Думал так но увы [vba]
Код
If Val(sh.Name) Like "Списание с завода" Then sh.Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13").ClearContents
да необязательно много переменных вот попробуйте изменить [vba]
Код
For Each sh In ThisWorkbook.Sheets If Val(sh.Name) > 0 Then sh.Range("B15:I52,D2:D11,H2:H11").ClearContents if sh.Name = "Списание с завода" then sh.Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13").ClearContents Next
[/vba]
да необязательно много переменных вот попробуйте изменить [vba]
Код
For Each sh In ThisWorkbook.Sheets If Val(sh.Name) > 0 Then sh.Range("B15:I52,D2:D11,H2:H11").ClearContents if sh.Name = "Списание с завода" then sh.Range("B3:AF3,B5:AF5,B7:AF7,B9:AF9,B11:AF11,B13:AF13").ClearContents Next
sboy, СПАСИБО огромеееееенное Но я все же был близок ((((( хоть и с ошибкой совершил обращение. Но главное что малость до меня дошло как (и самое что главное можно было и без объявления второй переменной а просто продолжить процедуру) ПОНЯЛ, хоть и частично, СПАСИБО!!!
sboy, СПАСИБО огромеееееенное Но я все же был близок ((((( хоть и с ошибкой совершил обращение. Но главное что малость до меня дошло как (и самое что главное можно было и без объявления второй переменной а просто продолжить процедуру) ПОНЯЛ, хоть и частично, СПАСИБО!!!lebensvoll