Telefonszámunk: 1-472-0679

INDEX.HOL.VAN Függvény változóval VBA

Kezdőlap Fórumok Excel programozás INDEX.HOL.VAN Függvény változóval VBA

4 bejegyzés megtekintése - 1-4 / 4
  • Szerző
    Bejegyzés
  • #2809
    7even
    Felhasználó

      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 adatok

      Windows(temp_name).Activate ‘Visszaugrás Bolti megérülés 2016 1fév 1.1.xlsx
      ActiveCell.Select

      While 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.
      Wend

      Windows(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.
      #2811
      7even
      Felhasználó

        Bocsánat ez lemaradt.

        Attachments:
        You must be logged in to view attached files.
        #2813
        horvimi
        Adminisztrátor

          Szia!
          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

          • A hozzászólás módosításra került: 7 years, 8 months telt el-horvimi.
          • A hozzászólás módosításra került: 7 years, 8 months telt el-horvimi.
          #2816
          7even
          Felhasználó

            Gondoltam, hogy ilyen banális probléma lesz. Természetesen így már működik.
            Hálás köszönetem érte!

          4 bejegyzés megtekintése - 1-4 / 4
          • Be kell jelentkezni a hozzászóláshoz.