Függvény beírása űrlapba

Függvény beírása űrlapba
2020-05-26T14:41:27+02:00
2020-05-28T13:14:29+02:00
2022-10-15T21:25:27+02:00
Donkartács
Sziasztok!

Van egy Useform-om egy excel makróban. Ezzel lehet egy listához újabb tételek hozzáadni 7db. változó bevitelével. Ez mindig a következő üres sor megfelelő oszlopaiba írja ezeket be.
Szeretném megoldani, hogy a 7db. változóból számított értékek már az űrlapon megjelenjenek majd egy adott cellában a változókkal együtt megjelenjen.

Példa: Az űrlapon van 3 szövegbeviteli mező, ezekbe egy téglalap 3 élének hosszát beírom.
Egy (mondjuk felirat mezőben) megjelenik a 3 szorzata, mint a téglatest térfogata,
majd ez az érték a 3 változóval együtt megjelenik 1-1 cellában. Ez csak egy buta példa, de szükségem lenne egy alapra, amivel a bonyolultabb képleteket betudom írni.
Mutasd a teljes hozzászólást!
Több megoldás is lehetséges.
pl. a beviteli tbx-ek AfterUpdate eseményébe - ekkor minden új adat beírása után frissül az eredmény. Tehetsz egy külön gombot is a Formra, és ennek click eseményére is írhatod. Javaslom, hogy a Form inicializálásakor minden tbx-et nulláz, hogy legalább "tiszta lappal" induljon a dolog.
Ha csak egész számokat vársz a beviteli tbx-ekbe, akkor célszerű a KeyPress eseménybe az alábbi kis kód:

If (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) Then KeyAscii = 0 End If
így biztosan nem fog megbolondulni egy véletlenszerűen beírt egyéb karaktertől.
Ha kell a tizedesvessző is, akkor ez persze felejtős.
Mutasd a teljes hozzászólást!

  • Lehet nem jól értem a feladatot, de én a következőt tenném:
    a beviteli textbox change eseményére a következő kódot írnám:

    Worksheets("munka1").Cells(1,1) = Me.tbx_bevitel1 Worksheets("munka1").Cells(1,2) = Me.tbx_bevitel2 . .
    így sorban. A aztán a függvény, amivel összeadod (osztod/szorzod stb)
    a textboxok értékeit és ennek eredményét eltárolnám egy változóban.

    Dim EREDM as integer EREDM = Worksheets("munka1").Cells(1,1)+ Worksheets("munka1").Cells(1,2)
    (ennek elegánsabb megoldásai is vannak) majd egy újabb textboxban megjeleníteném ezt a változót

    Me.tbx_Eredm = EREDM
    és hogy ne tlehessen felülírni véletlen sem,  ennek a textboxnak a Locked tulajdonságát False-ra állítanám
    Mutasd a teljes hozzászólást!
  • Szia! Köszönöm!

    Dim EREDM as integer
    EREDM = Worksheets("munka1").Cells(1,1)+ Worksheets("munka1").Cells(1,2) --> Ezt a parancsot hova írom? Bocsánat, nagyon kezdő vagyok, a makró is egy mintapéldából származik, azt alakítottam át, visszafejtve a változókat, így néhány dologra már rájöttem.



    A lényeg alapvetően annyi, hogy
    1.: nem a cellákba akarom írni a képleteket, mert 2-3 féle űrlap is van és más-más függvényekkel számíthatók ki az eredmények. Szeretném, ha az űrlapon belül lenne a képlet, ott meg is jelenne az eredmény, amit a bevitt változókkal együtt hozzáadok a táblázathoz.

    2.: Nem tudom hány sor lesz és nem akarom, hogy a cellákból kelljen képleteket másolgatni.

    Azt hiszem jól értetted.
    Mutasd a teljes hozzászólást!
  • Több megoldás is lehetséges.
    pl. a beviteli tbx-ek AfterUpdate eseményébe - ekkor minden új adat beírása után frissül az eredmény. Tehetsz egy külön gombot is a Formra, és ennek click eseményére is írhatod. Javaslom, hogy a Form inicializálásakor minden tbx-et nulláz, hogy legalább "tiszta lappal" induljon a dolog.
    Ha csak egész számokat vársz a beviteli tbx-ekbe, akkor célszerű a KeyPress eseménybe az alábbi kis kód:

    If (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) Then KeyAscii = 0 End If
    így biztosan nem fog megbolondulni egy véletlenszerűen beírt egyéb karaktertől.
    Ha kell a tizedesvessző is, akkor ez persze felejtős.
    Mutasd a teljes hozzászólást!
  • Ha tudod, hogy kb. mekkora számok várhatók, akkor érdemes a tbx tulajdonságai közt a MaxLenght  értékét lekorlátozni, pl. 4. Így értelem szerűen 9999 a beírható legnagyobb szám.
    Mutasd a teljes hozzászólást!
  • Szia!

    Dim EREDM as integer
    EREDM = Worksheets("munka1").Cells(1,1)+ Worksheets("munka1").Cells(1,2) --> Ezt a parancsot hova írom? Bocsánat, nagyon kezdő vagyok, a makró is egy mintapéldából származik, azt alakítottam át, visszafejtve a változókat, így néhány dologra már rájöttem.

    Az adott beviteli mezők eventjébe.
    És oda írhatsz olyant is hogy a kiszámolt beviteli mező. value =  eredmény

    Természetesen az eredmény beviteli mező-nek nem kell ilyen esemény.

    Természetesen le kell kezelni azokat az eseteket (Mindent!!!) amikor nem szabad számolni  mert szöveget írt be vagy a user éppen nullával való osztásra bíztat téged.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd