< návrat zpět
MS Excel
Téma: Kopírování oblasti buněk pomocí cells
Zaslal/a Imh0tep 28.5.2020 14:28
Dobrý den,
V příloze mám ukázkový příklad, ve kterém pomocí cells kopíruji konkrétní (jednotlivé) buňky. Je možné definovat resp kopírovat oblast buněk pomocí cells?
defakto potřebuji např. zápis
Worksheets("List2").Range("B7:D21") = Worksheets("List1").Range("B9:D23") nahradit zápisem pomocí cells, jelikož využívám cyklus DO WHILE a potřebuji se v případě neprázdné buňky posunout o 5 sloupců vpravo.
Napadá mě kopírovat každou buňku separátně, což znamená dalších 45 řádků kódu, ale možná to jde nějakou jednodušší cestou?
Logika kopírování je doufám pochopitelná z přílohy (pokud je pole B2 Listu 2 prázdné, uloží se data z Listu1 po kliknutí na tlačítko data do první tabulky na Listu2, pokud prázdné není, testuje se obsazenost pole G2 atd.)
Za postřehy děkuji
Miroslav
Stalker(28.5.2020 15:29)#046730 Myslel si to třeba takto ?
Private Sub CommandButton1_Click()
Pocitadlo = 2
Do While Pocitadlo < 30 '
If Worksheets("List2").Cells(2, Pocitadlo) = "" Then
With Me
List2.Cells(2, Pocitadlo).Resize(4) = Application.Transpose(Array(.Cells(3, 3), .Cells(4, 3), .Cells(5, 3), .Cells(6, 3)))
Exit Sub
End With
Else
Pocitadlo = Pocitadlo + 5
End If
Loop
End Sub
citovat
elninoslov(28.5.2020 15:35)#046731 Podľa mňa netreba transponovať:
Private Sub CommandButton1_Click()
Pocitadlo = 2
Do While Pocitadlo < 30 '
If Worksheets("List2").Cells(2, Pocitadlo) = "" Then
Worksheets("List2").Cells(2, Pocitadlo).Resize(4).Value = Worksheets("List1").Cells(3, 3).Resize(4).Value 'číslo zakázky a objednávky, datum objednávky a expedice
Worksheets("List2").Cells(7, Pocitadlo - 1).Resize(15, 4).Value = Worksheets("List1").Cells(9, 1).Resize(15, 4).Value 'položky
Exit Sub
Else
Pocitadlo = Pocitadlo + 5
End If
Loop
End Subcitovat
Stalker(28.5.2020 15:53)#046732 To elnino:
Samozřejmě máš pravdu
citovat