< návrat zpět

MS Excel


Téma: VBA string array rss

Zaslal/a 30.3.2022 16:52

Ahoj resim ve VBA praci s array ukazka kodu

myarray = Array("pondeli", "utery")

Fname = Sheets("List1").Range("B14").Value

Sheets(myarray).Copy
With ActiveWorkbook
.SaveAs Filename:=Fname
.Close
End With

jde mi oto jak dostat z bunek do promenne myarray text rekneme ze dny v tydnu se mi generujou v bunkach A1:A5
dny se generujou podle kalendare podle dnu se generujou listy s nazvem dne s tabulkou pres VBA. pote co vygeneruju listy s nazvem dne je potrebuju pres VBA ulozit, na to jsem si napsal jednoduchej kod ale nejsem schopen "naplnit" myarray... pokud to napisu rucne jak to mam v kodu tak to funguje...

Zaslat odpověď >

Strana:  1 2   další »
#052422
Stalker
myarray = Sheets("List1").Range("A1:A5").Valuecitovat
#052423
avatar

Stalker napsal/a:

myarray = Sheets("List1").Range("A1:A5").Value

tak to mi pise type mismatch coz je pocitam problem s formatem... nebo?citovat
#052424
avatar
zase pokud to vypisu v msg boxu a mam to rucne tak ok
https://photos.app.goo.gl/VmC4tbwBKGALhmo18
https://photos.app.goo.gl/Pyd574pomNs9zUeJ8citovat
#052425
avatar
Pole musí být deklarované jako dynamické a typ Variant:
Sub pole()
Dim myarray() As Variant
myarray = Sheets("List1").Range("A1:A5").Value
End Sub


Taky je třeba myslet na to, že vznikne dvourozměrné pole. V tomto případě se jedná o pole: myarray(1 To 5, 1 To 1) citovat
#052427
elninoslov
Ak je to 2 rozmerné pole, potrebujete Transpose (v tomto prípade bez premennej - podľa potreby prípadného ďalšieho spracovania...).
Sheets(Application.Transpose(Sheets("List1").Range("A1:A3"))).Copy
Ak je množstvo listov dynamické, teda môže nastať 1, tak to do poľa neprejde. To treba ošetriť. Ak môže nastať, že bude medzi bunkami prázdna, či neexistujúci list, to treba ošetriť...citovat
#052453
avatar
panove dekuji za odpovedi.. ale je to asi nad moje usili stim hnout dal.... prace s polema je nad moje chapani...citovat
#052454
avatar
Tak použijte jednoduše třeba toto: Sub pole2()
Dim myarray(4) As Variant
myarray(0) = Sheets("List1").Range("A1").Value
myarray(1) = Sheets("List1").Range("A2").Value
myarray(2) = Sheets("List1").Range("A3").Value
myarray(3) = Sheets("List1").Range("A4").Value
myarray(4) = Sheets("List1").Range("A5").Value
End Sub


nebo toto:Sub pole()
Dim myarray(4) As Variant
For i = 0 To 4
myarray(i) = Sheets("List1").Range("A" & i + 1).Value
Next
End Sub
citovat
#052455
avatar
tak kousek posun nastudovani Application.Transpose jsem to jiz dokazal dostat do pole... ale posun je ze jsem zjistil ze je problem pokud nemam spravne definovanou velikost pole.. pokud ma mdefinouvanou vetsi velikost pole nez je pocet dnu k ulozeni tak to pise subscript out of range.. je to posun ale stimhle opravdu nevim co delat.. teda nevim jak definovat velikost pole treba podle promene?? pak uz bych si to dokazal dopocitat...
Dim Fname As String

Dim myarray As Variant

myarray = Application.Transpose(Sheets("List1").Range("C1:C3"))

’myarray = Array("pondeli", "utery")

MsgBox Join(myarray, vbCrLf)
Fname = Sheets("List1").Range("B14").Value

Sheets(myarray).Copy

With ActiveWorkbook
.SaveAs Filename:=Fname
.Close
End With
End Subcitovat
#052457
avatar
Vložte soubor s makrem, které vám funguje s těmi ručně zadanými hodnotami.
Protože tam je makro, musí se soubor nejdříve zazipovat.citovat
#052458
avatar
vkladam odkaz celeho excelu jde mi o to ze kdyz se v listu 1 vyplni rok cislo tydne mesic tak to vygeneruje listy v danem mesici... ktery potom potrebuju zvlast ulozit do souboru. jsem zvedav co vymyslite... mozna je cesta vubec to neresit pres array a ukladat listy do souboru "jinak"
https://drive.google.com/file/d/1PUxL1u1S98INAG85pmJqZ2jnlq4sKgQ4/view?usp=sharingcitovat

Strana:  1 2   další »

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