Keresés

Új hozzászólás Aktív témák

  • Fferi50

    Topikgazda

    válasz alfa20 #35979 üzenetére

    Szia!

    Ilyen esetben a "háromdimenziós" változó megadásra van szükség, meg kell mondani a makróban, melyik modulban van a változó.
    A megoldás:
    Private Sub start()

    ThisWorkbook.makroFileWB.Sheets(1).Range("A1") = "1000"

    End Sub

    Igen, kicsit bizarrnak hat, hiszen a makroFileWB változó tartalma a ThisWorkbook objektum, viszont magát a változót a ThisWorkbook. modulban deklaráltad.
    Másrészt ne felejtsük el azt sem, hogy a ThisWorkbook objektum és az ActiveWorkbook objektum nem feltétlenül ugyanarra a munkafüzetre hivatkozik...bár alapból gondolhatnánk akár ezt is.
    A ThisWorkbook mindig a makrót elindító munkafüzet lesz, az ActiveWorkbook pedig, mint a neve is mutatja, az éppen aktív munkafüzet.
    Azt javaslom, hogy globál/publikus változókat mindig általános modulban deklarálj és a modulnévvel így könnyen tudsz rá hivatkozni: modulnév.változónév

    Javaslom, nézd át a változók élettartama és hatóköre részt a VBA helpben.

    Üdv.

Új hozzászólás Aktív témák

Hirdetés