컴퓨터 과학 & 영상처리 관련/VBA / 엑셀 함수

엑셀 vba 매크로에서 실행 & 야매로 알람 뜨게 만들기

꺄뜨르 2012. 5. 19. 01:55

해당 셀의 값을 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