By kgardner v sredo, 13. julija 2022
Objavljeno v Excel
odgovori 3
všeč mi je 1
Ogledov 5.7K
Glasov 0
Spremenil sem funkcijo zadeve, da odstranim obstoječe izbire, ko jih ponovno izberem, in da odstranim dodatne znake;. Tukaj je popravljena koda:

Zasebni poddelovni list_Spremeni (ByVal Target As Range)
'Posodobil Extendoffice 2019/11/13
'Posodobil Ken Gardner 2022/07/11
Dim xRng As Range
Dim xValue1 kot niz
Dim xValue2 kot niz
Dim semiColonCnt Kot celo število
Če je Target.Count > 1, potem zapustite sub
On Error Resume Next
Nastavi xRng = Cells.SpecialCells(xlCellTypeAllValidation)
Če xRng ni nič, zapustite Sub
Application.EnableEvents = False
'Če ni Application.Intersect(Target, xRng) potem ni nič
If Application.Intersect(Target, xRng) Potem
xVrednost2 = Ciljna vrednost
Aplikacija. Razveljavi
xVrednost1 = Ciljna vrednost
Target.Value = xValue2
Če xVrednost1 <> "" Potem
Če xVrednost2 <> "" Potem
Če je xVrednost1 = xVrednost2 ali xVrednost1 = xVrednost2 & ";" Ali xVrednost1 = xVrednost2 & "; " Potem ' pustite vrednost, če je na seznamu le ena
xVrednost1 = Zamenjaj(xVrednost1, "; ", "")
xVrednost1 = Zamenjaj(xVrednost1, ";", "")
Target.Value = xValue1
ElseIf InStr(1, xValue1, "; " & xValue2) Potem
xVrednost1 = Zamenjaj(xVrednost1, xVrednost2, "") ' odstrani obstoječo vrednost s seznama ob ponovnem izboru
Target.Value = xValue1
ElseIf InStr(1, xValue1, xValue2 & ";") Potem
xVrednost1 = Zamenjaj(xVrednost1, xVrednost2, "")
Target.Value = xValue1
Else
Target.Value = xValue1 & "; " & xValue2
Konec Če
Target.Value = Replace(Target.Value, ";;", ";")
Target.Value = Replace(Target.Value, "; ;", ";")
Če je InStr(1, Target.Value, "; ") = 1 Potem ' preveri za ; kot prvi znak in ga odstranite
Target.Value = Zamenjaj (Target.Value, "; ", "", 1, 1)
Konec Če
Če je InStr(1, Target.Value, ";") = 1 Potem
Target.Value = Zamenjaj (Target.Value, ";", "", 1, 1)
Konec Če
podpičjeCnt = 0
Za i = 1 To Len(Target.Value)
Če InStr(i, Target.Value, ";") Potem
podpičje = podpičje + 1
Konec Če
Naslednja i
If semiColonCnt = 1 Then ' remove ; če zadnji znak
Target.Value = Replace(Target.Value, "; ", "")
Target.Value = Replace(Target.Value, ";", "")
Konec Če
Konec Če
Konec Če
Konec Če
Aplikacija EnableEvents = True
End Sub
Živjo Ken Gardner,

Hvala za delitev. Ali vas moti, če dodamo vašo kodo VBA v našo vadnico: Kako ustvariti spustni seznam z več izbirami ali vrednostmi v Excelu?

Veselim se vašega odziva.

Amanda
·
1 letom
·
1 Likes
·
0 Glasovi
·
0 Komentarji
·
Zdravo Amanda, vsekakor kar tako naprej. Originalno kodo sem dobil od ExtendOffice.
Na zdravje, Ken
·
1 letom
·
1 Likes
·
0 Glasovi
·
0 Komentarji
·
Na zdravje Ken
·
1 letom
·
1 Likes
·
0 Glasovi
·
0 Komentarji
·
Ogled celotne objave