Miercuri, 13 iulie 2022
  3 Răspunsuri
  5.7K vizite
0
Voturi
Anula
Am modificat funcția de subiect pentru a elimina selecțiile existente la re-selectare și pentru a elimina ;-urile suplimentare. Iată codul revizuit:

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
„Actualizat de Extendoffice 2019/11/13
„Actualizat de Ken Gardner 2022/07/11
Dim xRng As Range
Dim xValue1 ca șir
Dim xValue2 ca șir
Dim punct și virgulă Cnt ca întreg
Dacă Target.Count > 1, apoi Ieșiți din sub
La data de eroare CV următoare
Set xRng = Cells.SpecialCells(xlCellTypeAllValidation)
Dacă xRng este Nimic, Ieșiți din Sub
Application.EnableEvents = Fals
„Dacă nu aplicație. Intersect(Target, xRng) este nimic, atunci
Dacă Application.Intersect(Target, xRng) Atunci
xValue2 = Target.Value
Aplicație.Anulați
xValue1 = Target.Value
Target.Value = xValue2
Dacă xValue1 <> "" Atunci
Dacă xValue2 <> "" Atunci
Dacă xValue1 = xValue2 Sau xValue1 = xValoare2 & ";" Sau xValue1 = xValue2 & "; " Apoi ' lăsați valoarea dacă este doar una în listă
xValoare1 = Înlocuire(xValoare1, "; ", "")
xValoare1 = Înlocuiește(xValoare1, ";", "")
Target.Value = xValue1
ElseIf InStr(1, xValue1, "; " & xValue2) Atunci
xValue1 = Replace(xValue1, xValue2, "") ' elimină valoarea existentă din listă la selecția repetată
Target.Value = xValue1
ElseIf InStr(1, xValue1, xValue2 & ";") Atunci
xValoare1 = Înlocuire(xValoare1, xValoare2, "")
Target.Value = xValue1
Altfel
Target.Value = xValue1 & "; " & xValue2
Final, dacă
Target.Value = Înlocuire(Target.Value, ";;", ";")
Target.Value = Înlocuire(Target.Value, "; ;", ";")
Dacă InStr(1, Target.Value, "; ") = 1 Atunci ' verificați ; ca prim caracter și eliminați-l
Target.Value = Înlocuire(Target.Value, "; ", "", 1, 1)
Final, dacă
Dacă InStr(1, Target.Value, ";") = 1, atunci
Target.Value = Înlocuire(Target.Value, ";", "", 1, 1)
Final, dacă
punct și virgulă Cnt = 0
Pentru i = 1 To Len(Target.Value)
Dacă InStr(i, Target.Value, ";") Atunci
semiColonCnt = punct și virgulăCnt + 1
Final, dacă
Apoi eu
Dacă punct şi virgulăCnt = 1, atunci 'elimină; dacă ultimul caracter
Target.Value = Înlocuire(Target.Value, "; ", "")
Target.Value = Înlocuire(Target.Value, ";", "")
Final, dacă
Final, dacă
Final, dacă
Final, dacă
Application.EnableEvents = Adevărat
End Sub
1 ani în urmă
·
#2872
0
Voturi
Anula
Salut Ken Gardner,

Vă mulțumim pentru împărtășire. Te superi dacă adăugăm codul tău VBA la tutorialul nostru: Cum se creează o listă derulantă cu selecții multiple sau valori în Excel?

Aștept cu nerăbdare să ne auzim. :)

Amanda
1 ani în urmă
·
#2879
0
Voturi
Anula
Bună Amanda, mergi înainte. Am primit codul original de la ExtendOffice.
Noroc, Ken
1 ani în urmă
·
#2882
0
Voturi
Anula
Noroc Ken :D
  • Pagina:
  • 1
Nu există răspunsuri făcute pentru acest post.