< návrat zpět

MS Excel


Téma: zopakovanie casti makra s inou hodnotou rss

Zaslal/a 6.8.2021 22:43

Ahojte, mam macro a vnom dlhu cast kodu v ktorom je tento riadok Range("D4:D200").Select potreboval by som tu cast zopakovat tak aby bolo zakazdym ine pismeno cize stlpec. Pismena musia byt v tomto poradi D,G,H,I,J,K.
Vedel by som tu cast napisat 6x pod seba a fungovalo by to, ale chcel by som vidiet spôsob ako sa to má robit. Dakujem ak si niekto nájde čas.

Zaslat odpověď >

#051092
elninoslov
Jednoducho parametrom. Toto je najjednoduchší príklad.
Sub Spracuj_Stlpec(Stlpec As String)
Range(Stlpec & "4:" & Stlpec & "200").Select
End Sub


Sub Makro_makricko()
Dim Stlpy() As String, i As Integer
Stlpy = Split("D,G,H,I,J,K", ",")
For i = 0 To UBound(Stlpy)
Spracuj_Stlpec Stlpy(i)
Next i
End Sub

Alebo priamo v cykle.
Každopádne keď vidím, že tam máte Select, tak to makro asi nebude optimalizované, však ?citovat
#051093
avatar
Že by takto?
Public Sub aaaa()
For i = 0 To 7
If i <> 1 And i <> 2 Then
Range("D4:D200").Offset(0, i).Select
' tvoj kod
End If
Next i
End Sub
citovat
#051094
avatar
marjankaj celkom nechápem kde sa tam maju tie stlpce menit.

elninoslov celkom chápem princíp, ale nefunguje mi to spraví to len stĺpec D a K ostatne to vynechá.

Pomáhal som si záznamom makra a potom to upravoval tak sú tam ešte nedostatky.citovat
#051095
elninoslov
Iba stĺp D a K? Tomu neverím, skúšal som to. Dajte si BreakPoint (klik na ten sivý zvislý pásik vľavo vedľa kódu) na tom riadku so Select, tam sa Vám makro pri každom priechode pozastaví. Uvidíte.

Robil by som to tiež radšej Offset-om ako marjankaj. Tam sa menia tie stĺpce posúvaním prvého o "i" stĺpcov, a to v prípade ak sa nejedná o i=1 alebo i=2 (čo sú nechcené stĺpce E a F. Proste posúva sa oblasť D4:D200 o "i" stĺpcov vpravo.citovat
#051096
avatar
@elninoslov, proč jsou v textovém poli ty čárky a uvozovky na konci? Stlpy = Split("D,G,H,I,J,K", ",") Nedává mi to smysl 9

Makro samozřejmě funguje, bude to nejspíš špatným opisem. @Sperhak by měl poslat makro, které mu nefunguje. Bez toho to asi nepůjde odladit.citovat
#051097
elninoslov
Urobil som si pole reťazcov - názvov stĺpcov.
Môžem dať aj
Stlpy = Array("D", "G", "H", "I", "J", "K")ale potom musí byť deklarácia ako Variant
Dim Stlpy()a volanie doplnené o CStr()
Spracuj_Stlpec CStr(Stlpy(i))
inak funkcia Split predsa rozdeľuje reťazec na základe rozdeľovača.
Reťazec "D,G,H,I,J,K" je 1. parameter funkcie.
Oddeľovač "," je 2. parameter funkcie.
A parametre sú oddelené čiarkou.
To je fuk aký si dám oddeľovač textu, napr. aj medzeru
Stlpy = Split("D G H I J K", " ")citovat
#051098
avatar
Už bol večer a asi som už driemal. Dnes som sa nato pozrel kód si odkrokoval a našiel chybu. Samozrejme bola u mňa, takže ďakujem a funguje.citovat
#051099
avatar
@elninoslov: Aha, já jsem přehlédl tu funkci Split. Teď už mi to dává smyslcitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje