Sreda, 13 julij 2022
  3 odgovori
  5.6 tisoč obiskov
0
Glasov
Razveljavi
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 As Integer
Č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
·
#2879
0
Glasov
Razveljavi
Zdravo Amanda, vsekakor kar tako naprej. Originalno kodo sem dobil od ExtendOffice.
Na zdravje, Ken
Na zdravje Ken :D
  • Stran:
  • 1
Za to objavo še ni odgovorov.