수요일, 13 July 2022
  3 답글
  5.6K 방문
0
투표
취소
다시 선택할 때 기존 선택 항목을 제거하고 추가 항목을 제거하도록 주제 기능을 수정했습니다. 수정된 코드는 다음과 같습니다.

개인 하위 Worksheet_Change (범위로 ByVal 대상)
'에 의해 업데이트됨 Extendoffice 2019/11/13
'Ken Gardner에 의해 업데이트됨 2022/07/11
범위로 희미한 xRng
Dim xValue1을 문자열로
Dim xValue2을 문자열로
정수로 Dim semiColonCnt
Target.Count > 1이면 Sub 종료
오류에 대한 다음 재개
xRng = Cells.SpecialCells(xlCellTypeAllValidation) 설정
xRng가 아무것도 아닌 경우 Sub를 종료하십시오.
Application.EnableEvents = False
'Application.Intersect(Target, xRng)가 아닌 경우에는 아무것도 아닙니다.
If Application.Intersect(Target, xRng) 다음
xValue2 = 대상.값
신청.실행취소
xValue1 = 대상.값
대상.값 = xValue2
xValue1 <> ""이면
xValue2 <> ""이면
xValue1 = xValue2 또는 xValue1 = xValue2 & ";"인 경우 또는 xValue1 = xValue2 & "; " 그러면 ' 목록에 하나만 있으면 값을 그대로 둡니다.
xValue1 = 바꾸기(xValue1, "; ", "")
xValue1 = 바꾸기(xValue1, ";", "")
대상.값 = xValue1
ElseIf InStr(1, xValue1, "; " & xValue2) 그러면
xValue1 = Replace(xValue1, xValue2, "") ' 반복 선택 시 목록에서 기존 값을 제거합니다.
대상.값 = xValue1
ElseIf InStr(1, xValue1, xValue2 & ";") 그런 다음
xValue1 = 바꾸기(xValue1, xValue2, "")
대상.값 = xValue1
다른
Target.Value = xValue1 & "; " & xValue2
END IF
Target.Value = Replace(대상.값, ";;", ";")
Target.Value = Replace(대상.값, "; ;", ";")
If InStr(1, Target.Value, "; ") = 1 Then ' 확인 ; 첫 번째 문자로 제거하고
Target.Value = Replace(Target.Value, "; ", "", 1, 1)
END IF
InStr(1, Target.Value, ";") = 1이면
Target.Value = Replace(대상.값, ";", "", 1, 1)
END IF
세미콜론Cnt = 0
i = 1에 대해 Len(Target.Value)까지
If InStr(i, Target.Value, ";") 다음
세미콜론Cnt = 세미콜론Cnt + 1
END IF
다음 i
semiColonCnt = 1이면 '제거합니다. 마지막 문자인 경우
Target.Value = Replace(Target.Value, "; ", "")
Target.Value = Replace(대상.값, ";", "")
END IF
END IF
END IF
END IF
Application.EnableEvents = True
최종 하위
0
투표
취소
안녕하세요 켄 가드너

공유해 주셔서 감사합니다. 튜토리얼에 VBA 코드를 추가해도 될까요? Excel에서 여러 선택 또는 값으로 드롭다운 목록을 만드는 방법?

나는 당신의 의견을 기다리고 있습니다. :)

아만다
1 년 전
·
#2879
0
투표
취소
안녕 아만다, 꼭 가세요. 나는 원래 코드를 ExtendOffice.
건배, 켄
0
투표
취소
건배 켄 :D
  • 페이지 :
  • 1
이 게시물에 대한 답변이 없습니다.