Telefonszámunk: 1-472-0679

[Resolved] inputbox hiba

Kezdőlap Fórumok Excel programozás [Resolved] inputbox hiba

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

      Az inputbox ha megjelenik és nem számot-integer-t írok az rendben van.
      Azt szeretném elérni, ha nem írok be semmit és OK, Mégse vagy az x bezárás gombra kattintok ne dobjon hibát!
      Köszönöm!

      
      Private Sub CommandButton2_Click()
      Dim sor As Integer
      Dim Jaavsor As Integer
      
      Jaavsor = Application.InputBox("Melyik sort javítsam?:", Type:=1)
      
          
              ActiveSheet.Cells(Jaavsor + 2, 3).Select
              sor = ActiveCell.Row
              oszlop = ActiveCell.Column
              modosit = Cells(sor, oszlop)
            
              eee = Range(Cells(sor, oszlop), Cells(sor, oszlop + 12)).Address
              
              ActiveSheet.ScrollArea = eee
              Range(eee).Interior.ColorIndex = 4
              MsgBox "Most javíthatsz a kiválasztott sorban! "
      
       
          
      FormBevitel.Hide
      End Sub
      
      #8161
      cipolly
      Felhasználó

        Üdv mindenkinek!
        Bocsi a megszólítás lemaradt!

        #8162
        horvimi
        Adminisztrátor

          Szia!

          Ugyan nem írtad le, hogy melyik soron ad hibát, de tippem szerint az Inputboxos sor utáni lesz az.
          Az Inputbox és az Application.Inputbox szöveges adatot ad vissza, tehát azt, amit beírtál, szövegként.
          ha nem írsz semmit, akkor üres sztringet ad vissza, ami dupla macskaköröm ügye.

          A Jaavsor változóban tehát ez lesz, és nem fog tudni hozzáadni kettőt.

          Ellenőrizd a Jaavsor változó tartalmát, mielőtt továbbmennél, és a maradék kódot csak akkor csináltasd meg vele, ha a Jaavsor változó <> „”

          Imre

          #8164
          verax
          Felhasználó

            Sziasztok!
            Nekem ez működik:

            Private Sub CommandButton2_Click()
            Dim Jaavsor
            Dim eee
            On Error Resume Next
            Jaavsor = Application.InputBox(„Melyik sort javítsam?:”)
            If Jaavsor = „” Then
            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 + 2 & „. sorban! ”
            End If
            Unload FormBevitel
            End Sub

            üdvözlettel
            verax

            #8165
            verax
            Felhasználó

              … és egy kis magyarázat

              Option Explicit – Segít a hibakeresésben.
              A Dim sor as Integer felesleges, mert a Jaavsor tökéletesen helyettesíti.
              A Jaavsor-nak szándékosan nem adtam típust, mert az InputBox-nak többféle értéktípust adhatsz.
              Igen, látom, tudom… ott van a Type:=1! Na, pont az okozza a problémát.
              Dim eee nem volt definiálva.
              On Error Resume Next – Hiba esetén, ne problémázz! Bízz bennem! Kezelni fogom.
              InputBox: Ha nem határozod meg típuskódot, akkor elfogadja a NULL visszatérési értéket is. Tehát nem fog problémázni a ki nem töltött beviteli mező miatt.
              …és akkor most, ahogy ígértem, kezelem a hibát: If … Then … ElseIf … Then … End If
              A végére pedig egy utolsó módosítás. FormBevitel.Hide helyett Unload FormBevitel. Az előbbi utasítás csupán elrejti az űrlapot, de továbbra is tárolja a memóriában, míg az utóbbi a memóriát is felszabadítja.

              üdvözlettel
              verax

              #8175
              cipolly
              Felhasználó

                Köszönöm verax!
                Valóban jó amit csináltál!
                A form elrejtése szándékos volt, hogy ott folytassa ahol abbahagyta az illető!
                Még egyszer köszönöm!

                #8176
                cipolly
                Felhasználó

                  Imi neked is köszönöm!
                  Jól látod a dolgot, majd kipróbálom!

                  #8177
                  cipolly
                  Felhasználó

                    Ez lett a végleges!
                    Még egyszer köszönöm mind kettőtöknek!

                    Private Sub CommandButton2_Click()
                    Dim Jaavsor
                    Dim eee
                    On Error Resume Next
                    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
                        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
                    End Sub
                    #8180
                    horvimi
                    Adminisztrátor

                      Klassz! 🙂

                      #8182
                      verax
                      Felhasználó

                        Örülök, hogy tovább gondoltad a javaslatomat 🙂 Nekem is tetszik!

                        üdv
                        verax

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