|
'마우스 클릭을 위한 선언하기
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
'마우스 좌표 가져오기를 위한 선언하기
Private Type POINTAPI
x As Long: y As Long
End Type
Dim a As POINTAPI
Private Declare Function GetCursorPos Lib "user32" (IpPoint As POINTAPI) As Long
'마우스 위치설정을 위한 선언하기
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Const MOUSEEVENTF_LEFTDOWN = 2
Const MOUSEEVENTF_LEFTUP = 4
'키보드 상태확인을 위한 선언하기
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
'키입력을 위한 선언하기
Const KEYEVENTF_EXTENDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
'시간지연(슬립)을 위한 선언하기
Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Sub S1_조립률()
Const most = 540
Const least = 500
Const minPass = 4.5
Const maxPass = 5
Const minFin = 2.79
Const maxFin = 2.99
Dim i As Integer
Dim re(7) As Double
Dim fin As Double
Dim fin2 As Double
Dim pass As Double
Dim pass2 As Double
Dim rBase As Variant
Randomize Timer
rBase = Array(0, 20, 30, 120, 140, 110, 50, 20)
Sheets("S1 조립률 (1)").Select
Do
re(0) = 0
For i = 1 To 7
re(i) = CInt(Rnd() * 201 - 0.5) / 10 + rBase(i)
re(0) = re(0) + re(i)
Next i
pass = Round(re(1) / re(0) * 100, 1)
fin = Round(((re(1) / re(0) * 100) _
+ ((re(1) + re(2)) / re(0) * 100) _
+ ((re(1) + re(2) + re(3)) / re(0) * 100) _
+ ((re(1) + re(2) + re(3) + re(4)) / re(0) * 100) _
+ ((re(1) + re(2) + re(3) + re(4) + re(5)) / re(0) * 100) _
+ ((re(1) + re(2) + re(3) + re(4) + re(5) + re(6)) / re(0) * 100)) / 100, 2)
Loop Until re(0) >= least And re(0) <= most And _
pass >= minPass And pass <= maxPass And _
fin >= minFin And fin <= maxFin
Cells(10, 3) = re(0)
Cells(7, 7) = fin
Cells(11, 4) = pass
For i = 1 To 7
Cells(10 + i, 2) = re(i)
Sheets("DB").Cells(1 + i, 13) = re(i)
Next i
'***************************************************************************************************************************
Sheets("S1 조립률 (2)").Select
minPass2 = pass - 0.1
maxPass2 = pass + 0.1
minFin2 = fin - 0.05
maxFin2 = fin + 0.05
Do
re(0) = 0
For i = 1 To 7
re(i) = CInt(Rnd() * 201 - 0.5) / 10 + rBase(i)
re(0) = re(0) + re(i)
Next i
pass2 = Round(re(1) / re(0) * 100, 1)
fin2 = Round(((re(1) / re(0) * 100) _
+ (((re(1) + re(2)) / re(0)) * 100) _
+ (((re(1) + re(2) + re(3)) / re(0)) * 100) _
+ (((re(1) + re(2) + re(3) + re(4)) / re(0)) * 100) _
+ (((re(1) + re(2) + re(3) + re(4) + re(5)) / re(0)) * 100) _
+ (((re(1) + re(2) + re(3) + re(4) + re(5) + re(6)) / re(0)) * 100)) / 100, 2)
Loop Until re(0) >= least And re(0) <= most And _
pass2 >= minPass And pass2 <= maxPass And _
fin2 >= minFin And fin2 <= maxFin And _
pass2 >= minPass2 And pass2 <= maxPass2 And _
fin2 >= minFin2 And fin2 <= maxFin2
Cells(10, 3) = re(0)
Cells(7, 7) = fin2
Cells(11, 4) = pass2
For i = 1 To 7
Cells(10 + i, 2) = re(i)
Sheets("DB").Cells(9 + i, 13) = re(i)
Next i
Sheets("DB").Select
=====================================================================
윗부분 코드중 견본파일에 빨간셀부분에 표시되는 소숫점 첫째자리까지 표현하고 싶은데 다른숫자들은 되는데 26.0 처럼 뒤에 0이 표현이 안됩니다.
FORMAT,FORMATNUMBER 등등 다 해봤는데 표현이 안되네요...
뭐가 잘못된걸까요? 직접실행으로는 되는데요 |
|