Kezdőlap › Fórumok › Excel programozás › [Resolved] Kijelölt elem törlése Comboboxban
- This topic has 5 hozzászólás, 3 résztvevő, and was last updated 2 months, 3 weeks telt el by
Laszlosala.
-
SzerzőBejegyzés
-
2024-06-12-19:26 #10792
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ösziAttachments:
You must be logged in to view attached files.2024-06-14-03:04 #10799Szia 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
verax2024-06-14-03:53 #10800Szia 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&”,”&tempTö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.
2024-06-14-05:48 #10801Szia!
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
2024-06-14-10:55 #10802Szia, segéd tartomány nélkül is megoldható?
Mintha A és B oszlop ott sem lenne.Köszi
2024-06-15-14:32 #10807sikerü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 LongApplication.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 = TrueTextBox1.SetFocus
End Sub -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.