Telefonszámunk: 1-472-0679

Táblázatok makrózása

Kezdőlap Fórumok Excel programozás Táblázatok makrózása

5 bejegyzés megtekintése - 1-5 / 5
  • Szerző
    Bejegyzés
  • #3255
    Vbacube
    Felhasználó

      Szia Imre,
      azt vettem észre, hogy ha egy táblázatként formázott tartományon végzett műveletet (pl.: kijelölések) makrószerkesztővel rögzítek, akkor a táblázat nem ListObject-ként, hanem hagyományos tartományként (Range) szerepel a felvett makróban. Persze, ha utána ezeket a sorokat átírom a ListObject-es változatra, akkor működnek, de nem világos, hogy ez miért van. Íme egy példa – egy hagyományos tartomány táblázattá alakításának makrózása a rögzítővel:

      Range(„D1:F7”).Select
      ActiveSheet.ListObjects.Add(xlSrcRange, Range(„$D$1:$F$7”), , xlYes).Name = „Teszt_Tábla”
      Range(„Teszt_Tábla[#All]”).Select
      ActiveSheet.ListObjects(„Teszt_Tábla”).TableStyle = „TableStyleMedium3”

      Ha a 3. sor helyére ezt írom:
      ActiveSheet.ListObjects(„Teszt_Tábla”).Range.Select
      akkor ugyanúgy működik.

      Az egészben az a legfurcsább számomra, hogy láthatólag tudja, h mi az a ListObject, hiszen létrehozza, elnevezi, stb., de aztán rögtön el is felejti. Később pedig, ha kézzel írt makróban ListObject-ként hivatkozom rá, akkor megint csak tudja, h miről beszélek.
      Ugyanez történik akkor is, ha mondjuk a táblázat egyes részeit jelölöm ki. Pl.:
      Ezt veszi fel: Range(„TBL_Teszt[Oszlop3]”).Select
      de ezt is megérti: ActiveSheet.ListObjects(„TBL_Teszt”).ListColumns(3).DataBodyRange.Select

      Mi lehet ennek a magyarázata? És érdemes lehet a kódban lecserélni a felvettet a ListObject-es változatra?

      Köszönöm, üdv
      András

      #3256
      horvimi
      Adminisztrátor

        Szia!

        Ez „sajnos” így működik by design.
        Emiatt nekem is elég sokat kellett utánajárnom, mit hogy kell csinálni, ha Listobject típusú műveleteket akarok csinálni.

        A VBA tanfolyamon szoktam adni egy doksit, amiben összefoglalom a ListObject típusú műveleteket.
        Van jó néhány oldal, ami ezzel foglalkozik, gondolom már rájuk találtál.

        Itt van például egy remek darab.

        Imre

        #3257
        Vbacube
        Felhasználó

          Igen, köszi, ez megvan.

          Amúgy, tavaly év végén voltam Nálad VBA tanfolyamon, és most átnéztem a doksikat, de nem találtam köztük ListObject-est. Esetleg el tudnád küldeni emailen?
          Magamnak puskázás céljából én is készítettem egy hasonlót, csatoltam, hátha valaki hasznát veszi.
          A kérdés igazából arra vonatkozott, hogy érdemes-e átírni kézzel, vagy jó-e az úgy, ahogy a rögzítő felveszi.

          András

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

            Szia!

            Ha neked megfelelően működik, akkor használhatod úgy, ahogy felveszi a rögzítő.
            De nem baj, ha a rögzítő féle struktúrált hivatkozást és a listobject megoldást is ismered egy-egy szituációban.

            Az anyagot elküldöm email-ben.

            Imre

            #3260
            Vbacube
            Felhasználó

              Köszi szépen!

              András

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