|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
1. 엑셀 버전(95,97,2000,2002): 2000
2. 윈도우즈의 버전(win95,win98,winME,winNT,win2000,winXP): XP
3. CPU (486,PentiumI/II/III/IV...): IV
4. RAM (32,64,128,256,512MB,1G...): 256
* 아래줄에 질문을 작성하세요 >>
좋은신 분들 덕분에 조금씩 실력이 늘고 있는 초보입니다. 감사드립니다.
1초이하의 단위로 시간을 표시하는 방법에 대해서 질문을 올립니다.
자세한 질문내용은 첨부파일에 있습니다.
==============[김상수님 글에 대한 답변입니다]==============
답변이 없어서..... api허접의 답변입니다. 이해당부드립니다.
Sub DDERun()
strVelocity = "DDES|SF10139!Volume"
ThisWorkbook.SetLinkOnData strVelocity, "myUpdate"
End Sub
Sub myUpdate()
With ThisWorkbook.Worksheets("price").Range("A65536").End(xlUp)(2)
.Value = Timer / 86400
.Offset(0, 1).Value = ThisWorkbook.Worksheets("price").Range("D2").Value
End With
End Sub
구문을 사실상 한줄바꾸었습니다.
.Value = Timer / 86400
인데요..
초이하를 18등분 더 쪼개줍니다.(이론상으로는 1/30초 정밀도를 갖는다는데 실제 해보니까 그렇게 까지 정밀하지는 않은거 같습니다.)
따라서 김상수님의 코드가 1초내에 10번이상 수행되지 않는다면 그냥 vb함수인 timer 를 사용하여도 충분하리라 생각됩니다.
(화일첨부합니다. 검토해보세요)
그런데 시간을 정밀하게 측정하는 api는 timeGetSystemTime , timeGetTime 등이 있다고 하여(인터넷 마구 뒤져보다가 발견한거라 엉터리일수 있습니다.),
그중 timeGetTime의 용법을 사용해봤지만
이론상으로는 1/1000초의 정밀도를 갖는다고 하지만 이함수가 오히려 엉터리인거 같습니다.
시간이 거꾸로 가는 사태가 발생되더군요..
(첨부화일의 모듈2에 api함수를 기재해보았습니다.)
결론은 timer함수로 그냥 사용할수 있다면 가급적이면 api함수를 동원할게 아니라 timer함수로 참는게 좋을듯해서....... |
|