Середа, 13 Липень 2022
  3 відповіді
  5.4 тис. Відвідувань
0
Голосів
розстібати
Я змінив функцію теми, щоб видалити наявні виділення після їх повторного вибору та видалити додаткові ;. Ось виправлений код:

Приватний допоміжний робочий лист_Change(ByVal Target As Range)
'Оновлено Extendoffice 2019/11/13
Оновлено Кеном Гарднером 2022/07/11
Dim xRng As Range
Dim xValue1 як рядок
Dim xValue2 як рядок
Dim semiColonCnt As Integer
Якщо Target.Count > 1, то вийдіть із Sub
On Error Resume 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 & ";") Тоді
xЗначення1 = Замінити(xЗначення1, xЗначення2, "")
Target.Value = xValue1
Ще
Target.Value = xValue1 & "; " & xValue2
End If
Target.Value = Replace(Target.Value, ";;", ";")
Target.Value = Replace(Target.Value, "; ;", ";")
If InStr(1, Target.Value, "; ") = 1 Then ' перевірити на ; як перший символ і видаліть його
Target.Value = Replace(Target.Value, "; ", "", 1, 1)
End If
Якщо InStr(1, Target.Value, ";") = 1 Тоді
Target.Value = Replace(Target.Value, ";", "", 1, 1)
End If
semiColonCnt = 0
Для i = 1 To Len(Target.Value)
Якщо InStr(i, Target.Value, ";") Тоді
semiColonCnt = semiColonCnt + 1
End If
Далі я
If semiColonCnt = 1 Then ' remove ; якщо останній символ
Target.Value = Replace(Target.Value, "; ", "")
Target.Value = Replace(Target.Value, ";", "")
End If
End If
End If
End If
Application.EnableEvents = True
End Sub
1 рік тому
·
# 2872
0
Голосів
розстібати
Привіт Кен Гарднер,

Дякуємо, що поділилися. Ви не проти, якщо ми додамо ваш код VBA до нашого підручника: Як створити розкривний список із кількома вибраними або значеннями в Excel?

Я з нетерпінням чекаю почути від вас. :)

Аманда
1 рік тому
·
# 2879
0
Голосів
розстібати
Привіт, Аманда, продовжуй. Я отримав оригінальний код від ExtendOffice.
Здоров'я, Кен
1 рік тому
·
# 2882
0
Голосів
розстібати
Ура Кен :D
  • Сторінки:
  • 1
На цю посаду ще немає відповідей.