Telefonszámunk: 1-472-0679

[Resolved] Cella érték nulla

Kezdőlap Fórumok Excel programozás [Resolved] Cella érték nulla

Topic Resolution: Resolved
8 bejegyzés megtekintése - 1-8 / 8
  • Szerző
    Bejegyzés
  • #8379
    cipolly
    Felhasználó

      Ü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
      #8380
      horvimi
      Adminisztrátor

        Szia!

        Több probléma is van akóddal, de a hibát a következő okozza:
        Olyan nincs, hogy Range(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 a Dim 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

        #8395
        cipolly
        Felhasználó

          Szia 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!

          #8396
          cipolly
          Felhasználó

            A pont utánni fájlkiterjesztést hozzá kell adni, .xmls !

            #8397
            cipolly
            Felhasználó

              ?
              Nem egyszerű..

              #8398
              horvimi
              Adminisztrátor

                Zip-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

                #8430
                cipolly
                Felhasználó

                  Ü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.
                  #8432
                  horvimi
                  Adminisztrátor

                    Ö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á!

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