홈>
매크로 문제가 있습니다. VBA 초보자. 다음과 같은 상황이 있습니다 :
Column D Column E
3 2
또한 사용자가 D 열에 E 열을 초과하는 항목을 입력하지 않도록하고 싶습니다. 그렇다면 메시지 상자가 나타나서 사용자에게 문제를 알려줍니다.
아래 코드는 D4/E4 셀에서 작동하지만 D5에서 E5, D6에서 E6 등을 비교하려는 경우 모든 셀에서 작동하지 못하게됩니다.
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D4") > Range("E4") Then
MsgBox "Discount too high"
End If
End Sub
- 답변 # 1
관련 질문
- Excel VBA에서 열에서 키워드 찾기 및 다른 열 편집
- excel : 마지막 행 IF를 찾는 매크로 도움말
- excel : 셀 색상을 확인/변경하기 위해 Change(byVal Target as Range)를 어떻게 사용합니까?
- excel : PC 스토리지 드라이브 이름 찾기
- excel : 성공적인 브라우저 시작 요청에 대한 동일한 페이로드에도 불구하고 VBA가 있는 HTTPRequest를 통한 "잘못된 다중 부분 페이로드 형식"
- excel : 수식 숫자 값을 숫자 더하기 1로 바꾸기
- excel : 값이 날짜를 따르도록 vlookup 또는 매크로를 설정하는 방법
- excel : 다른 이름으로 저장하는 동안 파일을 바꾸라는 메시지가 표시되면 "아니요" 또는 "취소"를 선택하면 VBA 1004 오류가 발생합니다.
- Excel 스프레드시트에 값을 쓰도록 확인란을 얻으려고 합니다.
- excel : 여러 If/Then 호출 옵션
Target
를 사용하는 것이 중요합니다 목적. 변경된 셀을 나타냅니다와이즈 비즈 확인
Target
열에 있습니다D
를 통한 루프 여러 셀에 붙여 넣기/업데이트 할 때 오류가 발생하지 않도록 셀Target
사용 열Offset
에 도착"같은"셀 업데이트
이것은 동일한 할인율로 셀을 캡처합니다
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range, d As Range, e As Range Dim high As String, same As String, s As String If Intersect(Target, Range("D:E")) Is Nothing Then Exit Sub For Each r In Target Set d = Intersect(Range("D:D"), r.EntireRow) Set e = Intersect(Range("E:E"), r.EntireRow) If d.Value > e.Value And e.Value <> vbNullString Then high = high & ", " & r.Address If d.Value = e.Value And e.Value <> vbNullString Then same = same & ", " & r.Address Next r If high <> vbNullString Then s = "Discount too high in cells: " & Mid(high, 3) If same <> vbNullString Then If s <> vbNullString Then s = s & vbCrLf s = s & "Discount the same in cells: " & Mid(same, 3) End If If s <> vbNullString Then MsgBox s, vbOKOnly, "Error" End Sub