Wpis z mikrobloga

#excel #office #vba

Walcze aby wklejał mi zakres w kazdy sheet o nazwie od 1-10.

Excel natomiast 1-10 uważa za numeracje sheetow chyba bo wkleja mi wartosc nawet gdy shett sie nazywa jakos inaczej.

Jak ogarnac ten loop??

mam cos takiego

Sub wkle()

Dim i As Integer

Dim sh As Worksheet

For i = 1 To 12

ActiveSheet.Range("S46:U52").Copy

Worksheets(i).Range("S46:U52").PasteSpecial ----------------- tu wywala mi blad
Next i

End Sub
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 1
@KwasneJablko: banalne - musisz najpierw dać linię
Worksheets(i).Activate i potem linia z paste special
Możesz działać tylko na aktywnym sheecie, to Cię limituje.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@KwasneJablko: czyli to jest kwestia adresowania nazwy samej w sobie. Excel adresuje nazwę i numer. Ja bym:
1. sprawdził wszystkie skoroszyty, może poprzednio użyte makro wprowadza zmiany w pierwszych 12 a nie we wszystkich, wtedy da się to uratować
2. Spróbował drugiej metody adresowania skoroszytu Sheets(CStr(i)) pod tym samym kątem. Któreś z tych 2 powinno zadziałać albo dla skoroszytów 1-12 albo dla 12 pierwszych skoroszytów.
  • Odpowiedz
@KwasneJablko Worksheets(""" & i & """). Ot i cała filozofia ;) Worksheets(5) - to piąty arkusz, Worksheets("5") - to arkusz o nazwie 5, dlatego musisz wstawić i w cudzysłów ;)

Żeby nie wywalał błąd to wyłącz obsługę błędów ;)
On error resume next
Set sh = Sheets(CStr(i))
sh.Range("S46:U52").PasteSpecial
On error goto 0
  • Odpowiedz
@KwasneJablko:
W ten sposób nadpisałbyś poprzednie Range, więc rng byłoby tylko takie jak w ostatniej linijce, czyli
ws. range("S246:U252")
Zadeklaruj po prostu kilka innych Range'ów
Dim rng1 As Range
Dim rng2
  • Odpowiedz