Telefonszámunk: 1-472-0679

Hivatkozás

Kezdőlap Fórumok Excel programozás Hivatkozás

3 bejegyzés megtekintése - 1-3 / 3
  • Szerző
    Bejegyzés
  • #1376
    nagyzoltan
    Felhasználó

      Sziasztok,

      Még kezdő excel makrozo vagyok. Szeretnék egy makróban egy másik munkalapon egy kijelölést formázni az alábbi tartomány használattal:

      Sheets(„InvAct”).Range(Cells(3 + i, 1), Cells(3 + i, 1 + j))

      Ha az aktív munkalap a fenti, akkor a makrot kézzel indítva lefut, de ha másik munkalapról indítom a makrot, akkor hibával elszáll.

      Kérlek ha tudtok ebben segíteni írjátok meg.

      Előre is köszönöm szíves segítségeteket.

      Üdv: Zoli

      #1380
      lndz
      Felhasználó

        nálam a következő gyakorlat alakult ki:
        mindig deklarálom a változókat, egy tartomány az egy range típusú objektum, aminek az apja a sheet, annak az apja meg workbook. ezért fentről lefelé deklarálok változókat, amiket után inicializálok, így biztos lehetek abban, hogy függetlenül attól, hogy hol vagyok, a változóra hivatkozva ugyanoda jutok.

        kb, így (másold be egy modulba és jobban fogod látni):

        Sub formatRange()
        ‘wb a változó neve a típusa workbook
        Dim wb As Workbook
        Dim sht As Worksheet
        Dim wArea As Range

        ‘változók hierarchikus inicializálása
        Set wb = Workbooks(„AmibenAzInvActSheetVan.xlsx”) ‘a nyitott workbookok közül az x nevű
        Set sht = wb.Sheets(„InvAct”)
        Set wArea = sht.Range(Cells(3 + i, 1), Cells(3 + i, 1 + j))
        ‘ha több formázási művelet van érdemes így
        With wArea
        .Font.Bold = True
        .HorizontalAlignment = xlCenter
        End With
        ‘ha csak egy akkor:
        ‘wArea.HorizontalAlignment = xlCenter
        End Sub

        #1385
        horvimi
        Adminisztrátor

          Nekem ez vált be:

          Ha csak annyit írsz, hogy Cells(x,y), az az aktív sheet Cells gyűjteményét jelenti. Mert nem adod meg, hogy mihez tartozik.

          Csináltam két próbát:

          Sub proba()

          With Sheets(„InvAct”).Range(Sheets(„InvAct”).Cells(3, 1), Sheets(„InvAct”).Cells(10, 1))
          .Value = „valami”
          End With

          End Sub

          ————————————————-
          Sub proba_1()

          Set sh = Sheets(„InVact”)
          Set r = sh.Range(sh.Cells(3, 1), sh.Cells(10, 1))
          With r
          .Value = „valami”
          End With

          End Sub

          Mind kettő megy tökéletesen.

          Tehát a Cells() előtt definiálni kell, hogy melyik lap Cells gyűjteményével dolgozol.

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