Dobrý den,
nedávno jste mi radili s kopírováním podle parametru.
For i = 1 To Cells(1, 2)
Cells(i, 3) = Cells(1, 1) '* Cells(1, 2)
Next i
Jak bylo řečeno tento cyklus vytvoří v buňce C1 tolik buněk s textem z A1 kolikrát je zadáno v buňce B1. Já se to snažím rozšířit aby oblast byla libovolně veliká. Tedy aby se kopírování neomezovalo jen na Buňky A1. Ať se pokouším jak se pokouším, tak pomocí xl(down) se mi ověří velikost tabulky v A a v B ale zkopíruje se poslední jen a já potřebuji aby pod sebou byly všechny záznamy.
VBa - kopírování podle parametru 2 Vyřešeno
-
- Level 1
- Příspěvky: 76
- Registrován: leden 11
- Bydliště: Pardubice
- Pohlaví:
- Stav:
Offline
VBa - kopírování podle parametru 2 Vyřešeno
"V případě hrubé nedbalosti hlavního počítače vedoucí k ohrožení posádky jsou všechny lodě Jupiterské důlní společnosti povinny mít záložní počítač, který nahradí počítač hlavní." Červený trpaslík.
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: VBa - kopírování podle parametru 2
Zkus tuto proceduru, kopiruje hodnoty (pro predpokladane opakovani v radu jednotek neni vlozena kontrola prekroceni limitu radku (sloupcu) listu):
Kód: Vybrat vše
Option Explicit
Sub KopirovatNkrat()
Dim SBlk As Range ' blok ke kopirovani
Dim SBlkR As Integer, SBlkC As Integer ' radky, sloupce
Dim NKrat As Integer ' pocet kopirovani
Dim TCll As Range ' cilova bunka pro umisteni leve horni bunky prvni kopie
Dim i As Integer, OfsR As Long, OfsC As Integer
With ActiveSheet
Set SBlk = .Range("a1:b2") ' definice zdrojoveho bloku
With SBlk ' pocet radku a sloupcu kopirovaneho bloku
SBlkR = .Rows.Count
SBlkC = .Columns.Count
End With
NKrat = .Range("G1").Value ' nacist pocet opakovani
Set TCll = .Range("j5") ' definice cilove bunky
' nastaveni ofsetu radku a sloupcu pro opakovane umisteni, vyber dle potreby
' pod sebou:
' OfsR = SBlkR
' OfsC = 0
'vedle sebe:
OfsR = 0
OfsC = SBlkC
' kaskadovite
' OfsR = SBlkR
' OfsC = SBlkC
For i = 0 To NKrat - 1
TCll.Resize(SBlkR, SBlkC).Offset((i * OfsR) - 1, (i * OfsC) - 1).Value = SBlk.Value
Next i
End With
' odstranit objektove promenne
Set SBlk = Nothing
Set TCll = Nothing
End Sub
-
- Level 1
- Příspěvky: 76
- Registrován: leden 11
- Bydliště: Pardubice
- Pohlaví:
- Stav:
Offline
Re: VBa - kopírování podle parametru 2
Čekal jsem něco jednoduššího. Můžu se ještě zeptat jak to funguje. Ať na to koukám a zkouším jak chci tak mi to nechce chodit...Děkuji za ochotu.
"V případě hrubé nedbalosti hlavního počítače vedoucí k ohrožení posádky jsou všechny lodě Jupiterské důlní společnosti povinny mít záložní počítač, který nahradí počítač hlavní." Červený trpaslík.
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: VBa - kopírování podle parametru 2
Vzhledem k tomu, ze z:
nelze vycist nez, ze potrebujes kopirovat nejaky blok bunek (a z predchozihi opakovane kopirovat), prilozil jsem proceduru univerzalnejsiho charakteru.
Na aktivnim listu je oblast bunek urcena k nasobnemu kopirovani - v procedure zadat blok bunek do:
Set SBlk = .Range("a1:b2") ' definice zdrojoveho bloku
Na aktivnim listu je bunka obsahujici nasobek kopirovani - v procedure zadat bunku do:
NKrat = .Range("G1").Value ' nacist pocet opakovani
V procedure zadat bunku pro umisteni leve horni bunky prvni kopie:
Set TCll = .Range("j5") ' definice cilove bunky
Dale je v procedure podle zpusobu rozmisteni kopirovanych bloku (pod sebou, vedle sebe, kaskadovite) potreba aktivovat/deaktivovat dva radky obsahujici prislusne ofsety:
OfsR = ...
OfsC = ...
Proceduru je nutno umistit v editoru VBA(volat z Excelu Alt+F11) do standardniho modulu, upravit vyse uvedene, a spustit v editoru VBA klavesou F5 nebo z Excelu z menu/pasu karet dle verze Excelu.
Neni osetren nekorektni stav - nezadany pocet opakovani, pripadne hodnota 0.
Já se to snažím rozšířit aby oblast byla libovolně veliká. Tedy aby se kopírování neomezovalo jen na Buňky A1.
nelze vycist nez, ze potrebujes kopirovat nejaky blok bunek (a z predchozihi opakovane kopirovat), prilozil jsem proceduru univerzalnejsiho charakteru.
Na aktivnim listu je oblast bunek urcena k nasobnemu kopirovani - v procedure zadat blok bunek do:
Set SBlk = .Range("a1:b2") ' definice zdrojoveho bloku
Na aktivnim listu je bunka obsahujici nasobek kopirovani - v procedure zadat bunku do:
NKrat = .Range("G1").Value ' nacist pocet opakovani
V procedure zadat bunku pro umisteni leve horni bunky prvni kopie:
Set TCll = .Range("j5") ' definice cilove bunky
Dale je v procedure podle zpusobu rozmisteni kopirovanych bloku (pod sebou, vedle sebe, kaskadovite) potreba aktivovat/deaktivovat dva radky obsahujici prislusne ofsety:
OfsR = ...
OfsC = ...
Proceduru je nutno umistit v editoru VBA(volat z Excelu Alt+F11) do standardniho modulu, upravit vyse uvedene, a spustit v editoru VBA klavesou F5 nebo z Excelu z menu/pasu karet dle verze Excelu.
Neni osetren nekorektni stav - nezadany pocet opakovani, pripadne hodnota 0.
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 6
- 1887
-
od buripe
Zobrazit poslední příspěvek
15 pro 2024 18:21
-
-
Která PC sestava je podle vás nejlepší? Příloha(y)
od Rhadley » 04 lis 2024 16:34 » v Rady s výběrem hw a sestavením PC - 4
- 1783
-
od Kminek
Zobrazit poslední příspěvek
05 lis 2024 09:03
-
-
-
Rozdělení sítě na podsítě, výpočet podsítí podle počtu hostů Příloha(y)
od zuzana3 » 27 pro 2024 08:09 » v Administrace sítě - 12
- 4727
-
od petr22
Zobrazit poslední příspěvek
27 pro 2024 12:29
-
-
- 0
- 2646
-
od LukM
Zobrazit poslední příspěvek
19 říj 2024 14:03
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů