Telefonszámunk: 1-472-0679

[Resolved] Kijelölt elem törlése Comboboxban

Kezdőlap Fórumok Excel programozás [Resolved] Kijelölt elem törlése Comboboxban

Topic Resolution: Resolved
6 bejegyzés megtekintése - 1-6 / 6
  • Szerző
    Bejegyzés
  • #10792
    Laszlosala
    Felhasználó

      Szia, a mellékelt fájl Userformjában nem tudom törölni a kijelölt sort a combobox list-ből.
      Más megközelítésben, ciklusban, de ez sem fut le: Ha textbox értéke benne van a combobox listában, akkor töröljük a combobox lista azon elmét, majd nulladik elemként adjuk hozzá a textbox értékét.
      Segédcellákat nem szeretnék használni, jó lenne a combobox elemeivel vagy esetleg új array segítségével megoldani,
      van ötleted?
      köszi

      Attachments:
      You must be logged in to view attached files.
      #10799
      verax
      Felhasználó

        Szia Laszlosala!

        A mellékelt fájl UserFormján lévő TextBox sem és a ComboBox sem tartalmaz kezdőértéket.
        Mit jelent számodra az hogy ciklusban?
        Mivel akadtál el? Nem tudod törölni a sort a ComboBoxból?
        A ComboBox-nak elemei vannak, nem sorai.
        Miért ComboBox-ot használsz, miért nem ListBox-ot?

        Nagyon fontos, hogy pontosan határozd meg a problémát. Ha ez sikerül, az is lehet, hogy magad is felismered a megoldást.

        Ha a ComboBox elemei közül szeretnél egyet törölni, ahhoz nem kell ciklus. Egyszerűen add meg a törölni kívánt elem indexét! A törölni kívánt elem – az éppen kijelölt elem indexét pedig a ListIndex tulajdonsággal kérdezheted le.

        `ComboBox1.RemoveItem (ComboBox1.ListIndex)

        Azon még elgondolkodhatsz, hogy jó ötlet-e állandóan visszaírni a ComboBox aktuális értékét a TextBox-ba?
        (spoiler: szerintem nem)

        üdvözlettel
        verax

        #10800
        Laszlosala
        Felhasználó

          Szia verax!
          Igyekszem pontosabban leírni:
          Ez egy könyvtári olvasók adatai kezelő űrlap felső sávja lenne, ami eltárolja az előző 5 ügyfél nevét /vagy azonosító számát.
          Ez egy demo lenne a szoftver fejlesztője számára, hogy lássa, milyen fejlesztési javaslatot szeretnék kérni.

          Működés:
          A baloldali textboxba beírok egy nevet, ez a név jelenjen meg a legördülő comboboxban, mindig felül.(Ezért nincsek kezdő értéke sem a textboxnak, sem a combo box listának.)

          Ha már szerepel a név a comboboxban, akkor először törölje azt az indexű elemet (ciklus nézni, hogy egyezik-e), majd nulladik elemnek adja hozzá.
          Ez eddig működik. (Későbbi fejlesztés során további mezőkbe betölti majd az adott ügyfél többi adatai is. Képzeld hozzá 🙂

          Amivel gondom van:
          Lenne egy olyan funkció is (és pont ez lenne a lényeg az egészben), hogy a jobb oldali legördülőből választok (utolsó 5 ügyfél) kattintok a listaelemre, betölti a textboxba a kiválasztott nevet (és későbbi fejlesztés után az összes további mezőt), gyakorlatilag megspóroljuk kollégának, hogy újra megkérdezze a nevét annak, aki 5 perce valamit intézett nála.

          Hibára fut, ha úgy szeretném törölni a combobox list selected elemét, hogy a combobox aktív.

          A remove item gombot nézd meg.

          Miért lenne jobb a listbox a combobox helyett?
          Tudsz más megoldást az utolsó 5 ügyfél nevének elmentésére?

          (Combobox.Remeveitem helyett:
          Lehetne egy egy stringben tárolni, temp=”andrás,béla,Csaba,dezső”
          Temp=textbox1&”,”&temp

          Törölni a combobox lista tartalmát,
          A tempet felbontani vessző mentén, és beleírni a combobox listába, amit előzőleg kiürítettem…)

          De menni kéne a remove item kódnak is, csakhogy hibára fut.

          #10801
          delila
          Felhasználó

            Szia!

            CountA-val megszámolod, hány sor van a B oszlopban.
            Innen visszafelé feltöltöd a ComboBox-odat 5 adattal.
            Előtte ellenőrzöd, hogy a B oszlop tartalmazza-e az új nevet.
            Ha igen, az első (nulladik) tag ez a név lesz, a feltöltő ciklus az utolsó tagtól 4-et lépjen visszafelé.

            Üdv, Delila

            #10802
            Laszlosala
            Felhasználó

              Szia, segéd tartomány nélkül is megoldható?
              Mintha A és B oszlop ott sem lenne.

              Köszi

              #10807
              Laszlosala
              Felhasználó

                sikerült megoldanom, egy temp szöveg segítségével:
                Private Sub ComboBox1_Change()
                Dim temp As String
                Dim i As Long
                Dim j As Long

                Application.EnableEvents = False

                Dim myarr As Variant

                ‘selected = Me.ComboBox1.ListIndex
                TextBox1 = ComboBox1.List(ComboBox1.ListIndex)

                For i = 0 To ComboBox1.ListCount – 1
                temp = temp & „;” & ComboBox1.List(i)
                Next
                ReDim myarr(ComboBox1.ListCount – 1)
                temp = TextBox1 & „;” & Replace(temp, TextBox1, „”)
                temp = Replace(temp, „;;”, „;”)
                myarr = Split(temp, „;”)

                For j = 0 To 2 ‘UBound(myarr) ‘valamiért ubound-1-nél kilép
                Me.ComboBox1.List(j) = myarr(j)
                Next
                ComboBox1 = „”
                Application.EnableEvents = True

                TextBox1.SetFocus
                End Sub

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