2014-09-12 2 views
0

모두입니다.코드 세 개의 다른 셀 값을 기준으로 셀의 텍스트를 변경하십시오.

현재 다른 셀에있는 텍스트를 기반으로 셀의 텍스트를 변경하려면 아래 코드를 사용하고 있습니다. 또한 내가하고 싶은 것은, 일부 셀에서는 해당 셀의 숫자/날짜를 기반으로 텍스트를 변경한다는 것입니다.

예 : J2, K2 및 L2가 날짜 또는 숫자 인 경우 셀 N2에 "N"을 입력하십시오. 어떤 아이디어가 이것을 위해 작동합니까?

코드는 현재 텍스트를 기반으로 텍스트를 변경 사용 : 당신이 할 수있는 사용자 정의 함수를 만들 수 있습니다

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Row > 1 Then 
     Application.EnableEvents = False 
     Select Case Target.Column 
      Case Columns("G:G").Column 
       If UCase(Target.Text) = "Y" Then 
        Target = UCase(Target.Text) 
        Range("I" & Target.Row).Value = "N" 
        Range("M" & Target.Row).Value = "N" 
       End If 
      Case Columns("F:F").Column 
       If UCase(Target.Text) = "CAR" Or UCase(Target.Text) = "BIKE" Then 
        Target = UCase(Target.Text) 
         Range("I" & Target.Row).Value = "N" 
          ElseIf UCase(Target.Text) = "N" Then 
           Target = UCase(Target.Text) 
            Range("I" & Target.Row).Value = "Y" 
            Range("G" & Target.Row).Value = "N" 
            Range("H" & Target.Row).Value = "" 
       End If 
      Case Columns("F:F").Column 
       If UCase(Target.Text) = "N" Then 
        Target = UCase(Target.Text) 
         Range("I" & Target.Row).Value = "Y" 
       End If 
      Case Columns("G:G").Column 
       If UCase(Target.Text) = "Y" Then 
        Target = UCase(Target.Text) 
         Range("I" & Target.Row).Value = "N" 
       End If 
     End Select 
     Application.EnableEvents = True 
    End If 
End Sub 
+0

가 왜 VBA 필요합니까 : 같은 귀하의 경우

그래서
Function IsNumberOrDate(values As Variant) As Boolean Dim ret As Boolean Dim v As Variant For Each v In values If IsNumeric(v) Or IsDate(v) Then ret = True Else ret = False Exit For End If Next IsNumberOrDate = ret End Function 

, 당신은 할 수 있습니까? 이것은 내가 생각하는 공식으로 할 수 있습니다. 그냥 궁금해서. – L42

답변

0

,이 같은 전화 :

MsgBox(IsNumberOrDate(Range("J2:L2"))) 

또는 인접하지 않은 셀을 :

MsgBox(IsNumberOrdate(Range("J2", "F2"))) 

여기 어떻게 할 수 있습니다. 부울 값을 반환하는 함수를 만듭니다. 값 배열을 함수에 보내면 배열의 항목 값을 반복하여 각각 숫자 또는 날짜 (실제로 날짜가 문자열이 아니면 중복 될 수 있음)를 테스트합니다 (항목 중 하나가 인 경우).이 아니면 함수는 False을 반환합니다. 모두 항목이 날짜/숫자 일 경우 True을 반환합니다. 대개 빈 셀을 사용하여 수행 할 작업 (이 경우는 숫자)으로 약간 수정해야 할 수도 있습니다.

If IsNumberOrDate(Range("J2:L2")) Then 
    'do something if all items ARE number or date 
    MsgBox "All values are numeric/date", vbOkOnly 
Else 
    'do something else if they are not 
    MsgBox "NOT all values are numeric/date", vbCritical 
End If 
관련 문제