"VBA에서 특정 문자열로 Excel 셀을 채우려면 어떻게해야합니까?"
는
그 질문에 대한 대답은 : 어쨌든
myRange.Value = "<myString>"
, 이것이 내가 당신의 문제를 해결하기 위해 노력할 것이다 방법입니다
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngChange As Range
Dim rngIntersect As Range
Dim xlCell As Range
Dim inOut As String
Set rngChange = Range("A:A")
Set rngIntersect = Intersect(Target, rngChange)
If Not rngIntersect Is Nothing Then
Application.EnableEvents = False
For Each xlCell In rngIntersect
If xlCell.Value = "" Then
inOut = "OUT"
Else
inOut = "IN"
End If
xlCell.Offset(0, 1).Value = Now
xlCell.Offset(0, 2).Value = inOut
Next xlCell
Application.EnableEvents = True
End If
End Sub
편집 : 응답에서
로를 묻는 사람의 의견, 다음 수정 된 코드 문제를 해결해야합니다 :
,451,515,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngChange As Range
Dim rngIntersect As Range
Dim inOut As String
Set rngChange = Range("A:A")
Set rngIntersect = Intersect(Target, rngChange)
If Not rngIntersect Is Nothing Then
Application.EnableEvents = False
If rngIntersect.Row = 1 Then
inOut = "OUT"
ElseIf rngIntersect.Offset(-1, 2).Value = "OUT" Then
inOut = "IN"
Else
inOut = "OUT"
End If
rngIntersect.Offset(0, 1).Value = Now
rngIntersect.Offset(0, 2).Value = inOut
Application.EnableEvents = True
End If
End Sub
Edit2가 : 이전 버전과 로그를 통해 루프
사용이 특정 ID에 대한 이전 bookiung 상태를 확인하기 :
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngChange As Range
Dim rngIntersect As Range
Dim xlCell As Range
Dim scanId As String
Dim inOutOld As String
Dim inOut As String
Set rngChange = Range("A:A")
Set rngIntersect = Intersect(Target, rngChange)
If Not rngIntersect Is Nothing Then
Application.EnableEvents = False
scanId = rngIntersect.Value
Set xlCell = rngIntersect
If rngIntersect.Row = 1 Then
inOut = "OUT"
Else
Do Until xlCell.Row = 1
Set xlCell = xlCell.Offset(-1, 0)
If xlCell.Value = scanId Then
inOutOld = xlCell.Offset(0, 2).Value
Exit Do
End If
Loop
End If
If inOutOld = "IN" Then
inOut = "OUT"
Else
inOut = "IN"
End If
rngIntersect.Offset(0, 1).Value = Now
rngIntersect.Offset(0, 2).Value = inOut
Application.EnableEvents = True
End If
End Sub
수정 된 제목 중 하나, 이해가되지 않습니다. 당신이 가진 * 구체적인 * 문제를 설명하려고 노력하십시오. 구체적이고 즉각적인 문제가 무엇인지 정확하게 설명하지 마라. –
'Now' (타임 스탬프/날짜를 반환하는 함수) 대신''원하는 텍스트를 사용하십시오. –
이 간단한 것을 VBA 할 필요가 없습니다. C2 셀에 아래 수식을 붙여 넣은 다음 C2 아래의 모든 "C"셀에 붙여 넣습니다. = (AND ((A2 <> ""), (C1 = "OUT")), "IN", IF (AND ((A2 <> "") OUT "," ")) – user3479671