엑셀 vba 매크로에서 실행 & 야매로 알람 뜨게 만들기
해당 셀의 값을 if문으로 비교해서 알람창을 띄우는거를 해보려고 했는데
일단 alt+f11로 vba에디터? 를 띄우고 ... 삽입 모듈로 함수 만들고 실행확인까지 에디터안에서 f5눌러서 했는데
이거 시발 항상 상주하게 못하나? 에디터에서만 되면 먼 소용이야
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [a1].Address Then
If [a1].Value = 1 Then
[b1].Value = "a"
Else
[b1].Value = ""
End If
End If
End Sub
이 코드가 sheet의 이벤트 기능을 이용해서 a1에 1이라고 쓰면 b1에 a라고 써지는듯
찾아보니깐 sheet에는 여러 이벤트가 있는듯
activate도 있는데 이걸 잘 쓰면 알람 기능도 가능하겠다
Private Sub Worksheet_Activate()
If [b2].Value = 5 Then
MsgBox "hi"
Else
MsgBox "else"
End If
End Sub
이걸로 b2가 5면 hi를 출력하게 할 수 있는데(알람을 할 수 있게되는데)
문제점은 매번 이 시트가 활성화 될때마다 알람이 뜬다는점...그래서 이렇게 바꿈
전역변수 alarmCheckVar1을 선언했고..이건 초기값이 0...그래서 첨에 0이면 10을주고
알람 5번 울리면 땡임
a 대신에 알람의 내용에 해당되는 셀의 값을 출력하게 해야겠네
Public alarmCheckVar1 As Integer
Public i_for As Integer
Private Sub Worksheet_Activate()
If alarmCheckVar1 = 0 Then
alarmCheckVar1 = 10
End If
For i_for = 1 To 100
If Cells(i_for, 2).Value = 5 And alarmCheckVar1 > 2 Then
MsgBox Cells(i_for, 1).Value & Chr(10) & "알람 행은" & i_for & "입니다"
alarmCheckVar1 = alarmCheckVar1 - 1
End If
Next
End Sub
Chr(10)은 \n에 해당함
참고 : http://blog.naver.com/PostView.nhn?blogId=yeppni&logNo=50071445939
for문은 next랑 같이 쓰는듯...와 오늘 한 2시간 했는데 그래도 원했던건 배운거 같다
엑셀 짱인거 같다...비쥬얼 베이직도 배우면 재밌겠다
주석은 ' '로 감싸면 되는듯 또는 ' 하나만
엑셀에서 시트 참조하는법 -> Cells(행,렬).Value Cells(행,렬).Address 이런식으로 msdn보자
문자열 사이에 &를 넣으면 붙여서 쓸 수 있는듯 printf()에 인자주듯이 사용가능 c++ cout 같네
'이건 일정 알람 하는거'
Private Sub Worksheet_Activate()
If alarmCheckVar1 = 0 Then
alarmCheckVar1 = 10
End If
For i_for = 1 To 100
If Cells(i_for, 2).Value = 5 And alarmCheckVar1 > 2 Then
MsgBox Cells(i_for, 1).Value '& Chr(10) & "알람 행은" & i_for & "입니다"'
alarmCheckVar1 = alarmCheckVar1 - 1
End If
Next
'여기는 가계부 빚 갚을 날이 15일 이전으로 남으면 뜸"
If alarmCheckVar2 = 0 Then
alarmCheckVar2 = 10
End If
For i_for = 1 To 100
If Worksheets("가계부").Cells(i_for, 4).Value < 30 And alarmCheckVar2 > 2 Then
If Worksheets("가계부").Cells(i_for, 4).Value > 0 Then
MsgBox Worksheets("가계부").Cells(i_for, 1).Value & Worksheets("가계부").Cells(i_for, 4).Value
alarmCheckVar2 = alarmCheckVar2 - 1
End If
End If
Next
End Sub