Ես փոփոխել եմ առարկայի գործառույթը, որպեսզի հեռացնեմ առկա ընտրանքները՝ դրանք վերընտրելու և ավելորդ ;-ները հեռացնելու համար: Ահա վերանայված կոդը.
Private Sub Worksheet_Change (ByVal Target as Range)
«Թարմացվել է Extendoffice 2019/11/13
«Թարմացվել է Քեն Գարդների կողմից 2022/07/11
Dim xRng որպես տիրույթ
Dim xValue1 որպես տող
Dim xValue2 որպես տող
Dim semiColonCnt որպես ամբողջ թիվ
Եթե Target.Count > 1 Ապա Ելք Ենթ
Ս.թ. սխալի Ռեզյումե Next
Սահմանել xRng = Cells.SpecialCells (xlCellTypeAllValidation)
Եթե xRng-ը ոչինչ չէ, ապա դուրս եկեք Sub
Application.EnableEvents = False
«Եթե ոչ Application.Intersect(Target, xRng) ոչինչ է, ապա
Եթե Application.Intersect(Target, xRng) Ապա
xValue2 = Target.Value
Դիմում. Հետարկել
xValue1 = Target.Value
Target.Value = xValue2
Եթե xValue1 <> "" Ապա
Եթե xValue2 <> "" Ապա
Եթե xValue1 = xValue2 Կամ xValue1 = xValue2 & ";" Կամ xValue1 = xValue2 & "; " Այնուհետեւ ' թողեք արժեքը, եթե միայն մեկը ցանկում
xValue1 = Փոխարինել (xValue1, "; ", "")
xValue1 = Փոխարինել (xValue1, ";", "")
Target.Value = xValue1
ElseIf InStr(1, xValue1, "; " & xValue2) Ապա
xValue1 = Replace(xValue1, xValue2, "") ' վերացնում է գոյություն ունեցող արժեքը կրկնվող ընտրության ցանկից
Target.Value = xValue1
ElseIf InStr(1, xValue1, xValue2 & ";") Այնուհետև
xValue1 = Փոխարինել (xValue1, xValue2, "")
Target.Value = xValue1
Ուրիշ
Target.Value = xValue1 & "; " & xValue2
Վերջ: Եթե
Target.Value = Փոխարինել (Target.Value, «;;», «;»)
Target.Value = Փոխարինել (Target.Value, "; ;", ";")
Եթե InStr(1, Target.Value, "; ") = 1 Ապա ' ստուգեք ; որպես առաջին նիշ և հեռացնել այն
Target.Value = Փոխարինել (Target.Value, "; ", "", 1, 1)
Վերջ: Եթե
Եթե InStr(1, Target.Value, ";") = 1 Ապա
Target.Value = Փոխարինել (Target.Value, ";", "", 1, 1)
Վերջ: Եթե
semiColonCnt = 0
For i = 1 To Len (Target.Value)
Եթե InStr(i, Target.Value, «;») Ապա
semiColonCnt = semiColonCnt + 1
Վերջ: Եթե
Հաջորդ i
Եթե semiColonCnt = 1 Ապա 'հեռացնել; եթե վերջին կերպարը
Target.Value = Փոխարինել (Target.Value, "; ", "")
Target.Value = Փոխարինել (Target.Value, ";", "")
Վերջ: Եթե
Վերջ: Եթե
Վերջ: Եթե
Վերջ: Եթե
Application.EnableEvents = Ճիշտ է
Վերջ Sub
Private Sub Worksheet_Change (ByVal Target as Range)
«Թարմացվել է Extendoffice 2019/11/13
«Թարմացվել է Քեն Գարդների կողմից 2022/07/11
Dim xRng որպես տիրույթ
Dim xValue1 որպես տող
Dim xValue2 որպես տող
Dim semiColonCnt որպես ամբողջ թիվ
Եթե Target.Count > 1 Ապա Ելք Ենթ
Ս.թ. սխալի Ռեզյումե Next
Սահմանել xRng = Cells.SpecialCells (xlCellTypeAllValidation)
Եթե xRng-ը ոչինչ չէ, ապա դուրս եկեք Sub
Application.EnableEvents = False
«Եթե ոչ Application.Intersect(Target, xRng) ոչինչ է, ապա
Եթե Application.Intersect(Target, xRng) Ապա
xValue2 = Target.Value
Դիմում. Հետարկել
xValue1 = Target.Value
Target.Value = xValue2
Եթե xValue1 <> "" Ապա
Եթե xValue2 <> "" Ապա
Եթե xValue1 = xValue2 Կամ xValue1 = xValue2 & ";" Կամ xValue1 = xValue2 & "; " Այնուհետեւ ' թողեք արժեքը, եթե միայն մեկը ցանկում
xValue1 = Փոխարինել (xValue1, "; ", "")
xValue1 = Փոխարինել (xValue1, ";", "")
Target.Value = xValue1
ElseIf InStr(1, xValue1, "; " & xValue2) Ապա
xValue1 = Replace(xValue1, xValue2, "") ' վերացնում է գոյություն ունեցող արժեքը կրկնվող ընտրության ցանկից
Target.Value = xValue1
ElseIf InStr(1, xValue1, xValue2 & ";") Այնուհետև
xValue1 = Փոխարինել (xValue1, xValue2, "")
Target.Value = xValue1
Ուրիշ
Target.Value = xValue1 & "; " & xValue2
Վերջ: Եթե
Target.Value = Փոխարինել (Target.Value, «;;», «;»)
Target.Value = Փոխարինել (Target.Value, "; ;", ";")
Եթե InStr(1, Target.Value, "; ") = 1 Ապա ' ստուգեք ; որպես առաջին նիշ և հեռացնել այն
Target.Value = Փոխարինել (Target.Value, "; ", "", 1, 1)
Վերջ: Եթե
Եթե InStr(1, Target.Value, ";") = 1 Ապա
Target.Value = Փոխարինել (Target.Value, ";", "", 1, 1)
Վերջ: Եթե
semiColonCnt = 0
For i = 1 To Len (Target.Value)
Եթե InStr(i, Target.Value, «;») Ապա
semiColonCnt = semiColonCnt + 1
Վերջ: Եթե
Հաջորդ i
Եթե semiColonCnt = 1 Ապա 'հեռացնել; եթե վերջին կերպարը
Target.Value = Փոխարինել (Target.Value, "; ", "")
Target.Value = Փոխարինել (Target.Value, ";", "")
Վերջ: Եթե
Վերջ: Եթե
Վերջ: Եթե
Վերջ: Եթե
Application.EnableEvents = Ճիշտ է
Վերջ Sub