>

매크로 문제가 있습니다. 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

    Target 를 사용하는 것이 중요합니다  목적. 변경된 셀을 나타냅니다

    와이즈 비즈 확인   Target 열에 있습니다

    D 를 통한 루프  여러 셀에 붙여 넣기/업데이트 할 때 오류가 발생하지 않도록 셀

    Target 사용  열 Offset 에 도착

    <시간>
    E
    
    
    <시간>

    "같은"셀 업데이트

    이것은 동일한 할인율로 셀을 캡처합니다

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim r As Range, s As String
        If Intersect(Target, Range("D:E")) Is Nothing Then Exit Sub
        For Each r In Target
            If Intersect(Range("D:D"), r.EntireRow).Value > Intersect(Range("E:E"), r.EntireRow).Value And Intersect(Range("E:E"), r.EntireRow) <> vbNullString Then s = s & ", " & r.Address
        Next r
        If s <> vbNullString Then MsgBox "Discount too high in cells: " & Mid(s, 3)
    End Sub
    
    
    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

  • 이전 php - mysqli_stmt_bind_result를 사용하여 세션 값을 데이터베이스 값으로 설정
  • 다음 python - Jupyter Notebook Pandas 데이터 프레임 HTML 인쇄물 복제