| 
                       
                      ※ 오늘 Daily Tip은 곽승주님이 제공해주신 내용입니다. 
                       
                      PC의 가장 큰 
                      미덕 중 하나는 빠르다는 것입니다.
						분명 예전보다 빠른 컴퓨팅 
						의 시대에 살고 있지만 우리는 PC가 빠르다는 것을 
                      오래 체감하진 못합니다. 새로운 
                      PC를 사거나 업그레이드를 하거나 새로 OS를 
                      막 설치했을 때 느끼려나... 그런데 프로그래밍의 경우 
                      종종 "빨리 빨리"가 
                      아닌 잠깐 멈추고 싶은 경우가 생기죠 그래서 종종 몇 초를 멈추었다가 다시 시작하는 방법을 묻는 질문이 
                      있습니다.  
						그래서 생각하는 꼼수 중 
                        하나는 수 십만 법을  헛 루프 돌리는 
                        것입니다. For~Next나 
                        Do~Loop를 사용하여 아무 하는 일 없이 수 십 만법 돌리도록 하는 것입니다.
						그러나 이런 경우 성능이 좋은 PC와 
                        그렇지 않은 PC간에 차이가 생길 겁니다.
						성능이 좋아 수 십만 법의 루프를 10초 
                        내 끝내는데, 성능이 떨어지는 
                        PC는 몇 10분 정도 걸리는 수가 
                        있습니다. 그래서 오늘은 몇 가지의 시간지연함수를 
                        소개하고자 합니다.  
						<1> 
                        DelayTime()함수 
						
						다음의
						
						DelayTime()함수는
						시작시점을 Timer함수로 
                        얻어오고 여기에 원하는 시간을 더해 루프를 돌 때 마다 확인합니다.
						물론 
                        Do~Loop를 반복하는 동안 DoEvents를 
                        사용하여 CPU를 독점하여 사용하지 않도록 합니다. 
                      
                        
                          | 
                           
							Sub DelayTime(PauseTime As 
                          Single) 
							    Dim start      
                          As Single     
							
							    start = Timer 
							    Do While Timer < start + 
                            PauseTime 
							        DoEvents 
							    Loop 
							End Sub  | 
                         
                       
                      <2> 
                      WaitSeconds()함수 
                      다음은 더 간단하게 한 줄로 
                      끝내는 함수입니다. 
						아래의 
						WaitSeconds()함수는 
						Application개체의 Wait메소드를 
                      사용합니다.  
                      
                        
                          | 
                           
							[Wait메소드에 대한 도움말] 
							 
							지정한 시간 동안 실행 중인 매크로를 잠시 중지합니다. 지정한 시간이 되면 True를 
                          반환합니다. 
							 
							*중요* 
							Wait 메소드는 모든 작업을 일시 중지하여 Wait가 영향을 주는 동안 다른 작업을 
                          실행할 수 없게 합니다. 그러나 인쇄나 재계산과 같은 백그라운드 작업은 계속할 수 있습니다.  | 
                         
                       
                      
						Wait메소드 다음에 언제까지 중단할지를 지정합니다.
						그래서 
						"Now+얼마"를 
                      하면 지금으로부터 얼마간을 중단하게 됩니다. 
                      
                        
                          | 
                           
							Sub WaitSeconds(waitTime As 
                          Integer) 
							    Application.Wait (Now + TimeValue("00:00:" 
                          & Format(waitTime, "00"))) 
							End Sub  | 
                         
                       
                      <3> 
                      Sleep()함수 
                      
                      API함수를 사용하는 방법도 있습니다. 
						
						Sleep()이라는 함수를 
                      사용하는데, 
						매개변수로는 밀리세컨즈를 
                      줍니다. 그러니까 우리에게 친숙한 초 단위를 밀리세컨즈로 
                      바꾸려면 1000을 곱하면 됩니다.
						가령 다음의 경우 3초를 지연시키기 위해
						‘3000'을 주었습니다. 
                      
                        
                          | 
                           
							Declare Sub Sleep Lib "kernel32" 
                          (ByVal dwMilliseconds As Long) 
							Sleep (3000)  '// Will pause for 3 seconds  | 
                         
                       
                      <4> 
                      GetTickCount함수 
                      또 다른 
                      API함수로 
						GetTickCount라는 
                      함수를 사용하기도 합니다.  
                      
                        
                          | 
                           
							Declare Function GetTickCount Lib 
                          "kernel32" () As Long  
							
							Sub Delay(nSeconds As Long) 
							  Dim TimeOut As Long  
							
							  TimeOut = (GetTickCount / 
                            1000) + nSeconds 
							  Do 
							    DoEvents 
							  Loop Until TimeOut < (GetTickCount / 1000) 
							End Sub  | 
                         
                       
                      
                       
   |