Kezdőlap › Fórumok › Excel programozás › [Resolved] Cella érték nulla
- This topic has 7 hozzászólás, 2 résztvevő, and was last updated 3 years, 9 months telt el by horvimi.
-
SzerzőBejegyzés
-
2021-03-18-11:50 #8379
Üdv!
Kettő számot szeretnék összehasonlítani egyet bekérek, és egy már meglévőt!
A problémám, hogy a meglévőt (TorzsSzam2) 0 azaz nullának látja az If-nél!?
F8-al lépkedve néztem az értékeket.Private Sub CommandButton2_Click() Dim Jaavsor As Integer Dim eee Dim TorzsSzam1, TorzsSzam2 As Integer On Error Resume Next TorzsSzam1 = (Application.InputBox("Kérem a törzsszámodat!")) Jaavsor = (Application.InputBox("Melyik sort javítsam?:")) TorzsSzam2 = Range(Cells(Jaavsor + 2, 15)).Value TorzsSzam2 = CInt(Range(Cells(Jaavsor + 2, 15))) MsgBox TorzsSzam2 If TorzsSzam1 = TorzsSzam2 Then If Not IsNumeric(Jaavsor) Or Jaavsor = "" Then MsgBox "Nem írtál be semmit, vagy nem számot írtál!" Unload FormBevitel Exit Sub ElseIf Jaavsor > 0 Then eee = Range(Cells(Jaavsor + 2, 3), Cells(Jaavsor + 2, 15)).Address ActiveSheet.ScrollArea = eee Range(eee).Interior.ColorIndex = 4 MsgBox "Most javíthatsz a " & Jaavsor & ". sorban! " End If Unload FormBevitel Else: MsgBox "Nem vagy jogosult a sor javítására!" End If End Sub
2021-03-18-12:14 #8380Szia!
Több probléma is van akóddal, de a hibát a következő okozza:
Olyan nincs, hogyRange(Cells(Jaavsor + 2, 15)).Value
Ha ezt beírod az immediate ablakba, hibát dob rá.
Mivel kikapcsoltad a hibakezelést (miért is?) ezért simán tovább megy, de a változóban nem lesz semmi.A Range-nem így nem lehet egy cellát megadni, de nem is kell, mert ez elég, és jó is:
Cells(Jaavsor + 2, 15).Value
Ha ezt javítod, valószínűleg jó lesz.
Egyéb problémák:
– A változók deklarációjánál egyenként kell típust adni, nem lehet őket tömegese tipizálni mint mondjuk C-ben
Tehát aDim a, b as integer
azt jelenti, hogy az a variant lesz, a b integer.
Helyesen külön sorrba, vagy :Dim a as integer, b as integer
– Az Inputbox mindig szöveget ad vissza, ezt nem kezeled idejében, a bevitelnél.
Ez lenne jó:TorzsSzam1 = CInt(Application.InputBox("Kérem a törzsszámodat!"))
Utóbbi nem biztos, hogy hibát ad, de megeshet.
És akkor már lejebb nem kell integerre alakítani Torzsszam2-t (sem)A többi részt nem néztem. Ha ezt javítod, és a logika jó, akkor jó lesz.
Imre
2021-03-18-19:48 #8395Szia Imi!
A hibakezelést korábbi témánál verax adta a tippet
Ezt szeretném tovább optimalizálni, csak az javíthasson a sorban akinek az O oszlopban szerepel a Törzsszáma!A Range hibát már lányos zavaromba írtam el..
de tartománynál így lehet használni pl. eee = Range(Cells(Jaavsor + 2, 3), Cells(Jaavsor + 2, 15)).Address
Sok mindent próbáltam, kicsit össze is zavarodtam!
A Cint-tel se jutottam előrébb.. TorzsSzam1 = CInt(Application.InputBox(„Kérem a törzsszámodat!”))
A If TorzsSzam1 = TorzsSzam2 Then összehasonlítás még most sem jó!Holnap nekiugrok, de mára elég.
Csatolom az egész fájlt, lehet más hiba is van, csak most nem veszem észre.
Ha valaki tud segítsen!
Köszönöm!2021-03-18-19:51 #8396A pont utánni fájlkiterjesztést hozzá kell adni, .xmls !
2021-03-18-19:52 #8397?
Nem egyszerű..2021-03-20-12:55 #8398Zip-et tudsz feltölteni. A topic indításakor is odaírtam…
De szerintem meg fogod oldani.A hibakezelés kikapcsolásának semmilyen funkcióját nem látom a kódban.
Csak akkor csináljuk, ha a van egy olyan parancssor, ami hibát okozhat. De ezután meg szoktuk vizsgálni, hogy volt-e hiba…Imre
2021-03-21-21:21 #8430Üdv!
Bocsi más dolgom volt, csak összejött!
A hibakezelést korábbi témánál verax adta a tippet
Alapvető hibám!
A Variant/Stringből akartam integert!
Nem jött össze…, okát nem tudom.
Mivel TorzsSzam2 = Cells(Jaavsor + 2, 15) pedig Variant/Double lett!
Igy nem jöhetett össze az If, ezért Átalakítottam Stringgé, TorzsSzam2 = CStr(TorzsSzam2) így már működik!
Ha valakit érdekel progi teljes működése, leírom.Private Sub BTN_Javit_Click() Dim Jaavsor Dim eee Unload FormBevitel Skip: 'On Error Resume Next TorzsSzam1 = Application.InputBox("Kérem a törzsszámodat!") If TorzsSzam1 = "" Then MsgBox ("Nem írtál be semmit!") GoTo Skip End If Skip2: Jaavsor = Application.InputBox("Melyik sort javítsam?:") If Not IsNumeric(Jaavsor) Or Jaavsor = "" Then MsgBox "Nem írtál be semmit, vagy nem számot írtál!" Unload FormBevitel GoTo Skip2 End If TorzsSzam2 = Cells(Jaavsor + 2, 15) TorzsSzam2 = CStr(TorzsSzam2) If TorzsSzam1 = TorzsSzam2 Then Else: MsgBox "Nem vagy jogosult a sor javítására!" Exit Sub End If If Jaavsor > 0 Then eee = Range(Cells(Jaavsor + 2, 3), Cells(Jaavsor + 2, 15)).Address ActiveSheet.ScrollArea = eee Range(eee).Interior.ColorIndex = 4 MsgBox "Most javíthatsz a " & Jaavsor & ". sorban! " End If Unload FormBevitel End Sub
Attachments:
You must be logged in to view attached files.2021-03-21-22:03 #8432Örülök, hogy sikerült.
A hibakezeléses dolognak nincs funkciója. Látom, kivetted. Benne maradhat, de a sub-on belül minden hibát el fog nyelni.
Ha pl. egy integer-nek stringet adnál, akkor „type mismatch error” hibát ad futás közben.
Viszont ez nem jön elő a hibakezelés kikapcsolása miatt.Szóval szerintem csak úgy veszélyes beírni egy ilyet anélkül, hogy kezelnéd a potenciális hibát.
Na hajrá!
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.