Kezdőlap › Fórumok › Excel programozás › INDEX.HOL.VAN Függvény változóval VBA
- This topic has 3 hozzászólás, 2 résztvevő, and was last updated 8 years, 4 months telt el by 7even.
-
SzerzőBejegyzés
-
2016-07-21-18:49 #2809
Sziasztok! Szia Imi!
Kis segítséget szeretnék kérni! Előre is nagyon szépen köszönöm!
Adott két munkafüzet.(Bázistábla.xlsm és KP-0876.xls). A feladat, hogy a Bázistábla.xlsm adott celláiba, (az egyszerűség kedvéért amiben éppen állok) egy egyszerű INDEX HOL.VAN függvénnyel, visszakapjam a KP-0876.xls munkafüzetből az adatokat. Ez idáig oké. Remekül működik, egészen addig a pontig, amíg a függvény argumentumaként nem a fixen beírt fájlnevet adom meg (KP-0876.XLS),hanem egy „fc” változót írok be a helyére, amelyet azelőtt deklaráltam. (van benne egy „while wend” ciklus is, de az most szerintem nem érdekes). Mi lehet a gond? Mit rontok el?Sub fokonyvmasolas()
ar = ActiveCell.Offset(1, 0) ‘aktív cella alatt eggyel
fc = ActiveCell.End(xlUp).Value ‘aktív cella oszlopának első cellája
temp_name = „Bázistábla.xlsm”Application.DisplayAlerts = False ‘párbeszédablak kikapcs
ChDir „C:\Users\Documents\” ‘ugyanaz a könyvtár, ahol a Bázistábla található
Workbooks.Open Filename:=fc & „.xls” ‘az adattábla, ahonnan kellenek az adatokWindows(temp_name).Activate ‘Visszaugrás Bolti megérülés 2016 1fév 1.1.xlsx
ActiveCell.SelectWhile ar = „”
ActiveCell.Offset(1, 0).Select ‘aktív cella alatti 1. cella
ActiveCell.FormulaR1C1 = _
„=INDEX(fc & ‘.xls’!C5,MATCH(RC1,fc & ‘.xls’!C1,0))” ‘valamiért itt a függvényben nem ismeri fel a fájlnevet változóként, csak, ha direktben megadjuk, mint a köv. sorban:
‘ActiveCell.FormulaR1C1 = _
„=INDEX(‘KP-0876.xls’!C5,MATCH(RC1,’KP-0876.xls’!C1,0))”
Selection.Copy
Selection.PasteSpecial (xlPasteValues) ‘értékbeilleszt
ar = ActiveCell.Offset(1, 0) ‘ar változó új értéket kap.
WendWindows(fc & „.xls”).Close ‘adattábla bezárása
Application.DisplayAlerts = True ‘ ‘párbeszédablak bekapcs
End Sub
Attachments:
You must be logged in to view attached files.2016-07-21-18:52 #28112016-07-21-23:24 #2813Szia!
Ez egy klasszikus hiba, szinte mindenki elköveti, amikor egy képletben változót akar használni.
Az a gond, hogy a képlet valójában egy szöveg. Dupla idézőjellel kezdődik és záródik. ha ebben csak így simán beírod a változót, akkor annak a neve, és nem az értéke lesz a képletbe, mint szöveg.
Ezt próbáld:Activecell.FormulaR1C1 = _ "=INDEX('" & fc & ".xls'!C5,MATCH(RC1," & fc & ".xls'!C1,0))"
Ugye külön figyelni kell a szimpla idézőjelekre is.
A módszer lényege, hogy meg kell szakítanod a szöveget azon a helyen, ahová a változó megy. Jelen esetben az INDEX kezdete és a szimpla idézőjel után.
Befűzöd a változót, és tovább folytatod az eredeti stringet.
A változó következő előfordulásakor újból ugyanez a teendő.Imre
2016-07-22-17:26 #2816Gondoltam, hogy ilyen banális probléma lesz. Természetesen így már működik.
Hálás köszönetem érte! -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.