Hej Mirki, możecie pomóc mi udoskonalić moje nagrane makro?
Co robi aktualnie? Zaznacza fragmenty w arkuszu, wyszukuje pustych komórek i uzupełnia je zerami..
Co chciałbym żeby robiło?
Jeżeli w kolumnie B jest jakieś nazwisko to wyszukuje w odpowiednim do tego wierszu w kolumnach od D do H pustych komórek i uzupełnia je zerami. Jeżeli w kolumnie B nie ma już żadnego nazwiska to kończy w tym przedziale i przeskakuje kilka komórek niżej w kolumnie B do następnego zakresu (max ok 180 komórek). I dodatkowo jeżeli w pierwszym zakresie wszytsko jest uzupełnione to też przeskakuje dalej. Bo teraz jak raz uzupełni zerami to poźniej wywala błąd że nie ma co uzupełnić :/
With ActiveSheet LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row Set Rng = .Range("B2:B" & LastRow).SpecialCells(xlCellTypeConstants) End With
Set Rng = Union(Rng.Offset(, 2), Rng.Offset(, 3), Rng.Offset(, 4), Rng.Offset(, 5), Rng.Offset(, 6)) On Error Resume Next Rng.SpecialCells(xlCellTypeBlanks).Value2 = 0 End Sub
Pamietajcie, jesli wybierzecie bande czworga, tzn ze zgadzacie sie na lockdowny i zamordyzm. Dacie znac ze w przyszlosci zmuszanie ludzi do siedzenia w domu przez 1-2 lata jest normą i nikt za to nie odpowie.
Hej Mirki, możecie pomóc mi udoskonalić moje nagrane makro?
Co robi aktualnie?
Zaznacza fragmenty w arkuszu, wyszukuje pustych komórek i uzupełnia je zerami..
Co chciałbym żeby robiło?
Jeżeli w kolumnie B jest jakieś nazwisko to wyszukuje w odpowiednim do tego wierszu w kolumnach od D do H pustych komórek i uzupełnia je zerami. Jeżeli w kolumnie B nie ma już żadnego nazwiska to kończy w tym przedziale i przeskakuje kilka komórek niżej w kolumnie B do następnego zakresu (max ok 180 komórek). I dodatkowo jeżeli w pierwszym zakresie wszytsko jest uzupełnione to też przeskakuje dalej. Bo teraz jak raz uzupełni zerami to poźniej wywala błąd że nie ma co uzupełnić :/
Moje nagranie :)
Sub Makro6()
'
' Makro6 Makro
'
Application.ScreenUpdating = False
Range("D2:H17").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "0"
Range("D27:H45").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "0"
Range("D54:H67").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "0"
Range("D77:H92").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "0"
Range("D102:H117").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "0"
Range("D127:H142").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "0"
Range("D152:H168").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "0"
Range("D177:H191").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "0"
Range("B2").Select
Application.ScreenUpdating = True
End Sub
Być może chodzi o coś takiego:
Option Explicit
Sub Test()
Dim LastRow As Long
Dim Rng As Range
With ActiveSheet
LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
Set Rng = .Range("B2:B" & LastRow).SpecialCells(xlCellTypeConstants)
End With
Set Rng = Union(Rng.Offset(, 2), Rng.Offset(, 3), Rng.Offset(, 4), Rng.Offset(, 5), Rng.Offset(, 6))
On Error Resume Next
Rng.SpecialCells(xlCellTypeBlanks).Value2 = 0
End Sub
I działa :) bardzo dziękuję! Naprawdę :)