2014-01-09 3 views
0

나는 이것을 수 일간 연구 해왔고 계산 된 값을 채우는 방법을 알아낼 수 없습니다. 나는이 코드를 가지고있다. 그러나 그것이 끝날 때 타입 불일치가 발생한다. 디버그 에러가 발생한다. 나는 한 제품의 수량을 출석률로 나누어 관통 율을 찾고 싶다. 수량 및 출석은 SouvenirProgramForm이라는 별도의 양식에 입력하고 텍스트 상자는 수량 및 출석이라고합니다. 내가 계산하고자하는 양식은 "CurrentPen"텍스트 상자에 "Goal"양식입니다. 내가 생각하고 찾을 수있는 모든 가능한 것을 시도했지만 아무 것도 작동하지 않습니다. 이 코드는 내가 가졌던 것 중 가장 가까운 것으로, 침투 률을 표시 할 위치 옆의 "계산"이라는 단추에 넣습니다. 오류는 z = x/y 어딘가에 있습니다.숫자를 하나의 양식으로 나누고 다른 숫자로 답을 제공하여 계산

Dim x As Variant 
Dim y As Variant 
Dim z As Variant 
x = SouvenirProgramForm.Quantity.Value 
y = SouvenirProgramForm.Attendance.Value 
z = x/y 
CurrentPen.Value = z 

도움을 주시면 대단히 감사하겠습니다.

+0

값을 텍스트로 읽을 수 있으므로 가능한 값을 나눌 수 없습니다. long 값으로 변환하려고 시도 했습니까? 예를 들어, 'x = CLng (SouvenirProgramForm.Quantity.Value) –

+0

아니, 나는 그것을 시도하지 않았다, 나는 어떤 일이 벌어지고 있을지도 모른다고 생각했지만 값을 변환하는 방법을 알 수 없었다. 오랫동안 변환하지 못했지만 방금 시도했습니다. 도와 주셔서 감사합니다. 다른 추천 사항이 있습니까? – user3178885

+0

F8을 사용하여 코드를 단계별 실행하면 SouvenirProgramForm.Quantity 및 Attendance가 반환하는 값은 무엇입니까? –

답변

0

변수가 변형으로 선언 되었기 때문에 가능한 값은 텍스트로 읽을 수 있습니다.

봅니다

당신은 (아래에서 변수 유형을 당신

Dim x As Long 
Dim y As Long 
Dim z As Long 
x = SouvenirProgramForm.Quantity.Value 
y = SouvenirProgramForm.Attendance.Value 
z = x/y 
CurrentPen.Value = z 

또는

Dim x As Variant 
Dim y As Variant 
Dim z As Variant 
x = SouvenirProgramForm.Quantity.Value 
y = SouvenirProgramForm.Attendance.Value 
z = CLng(x)/CLng(y) 
CurrentPen.Value = z 

을 위해 아래 작업을 확인할 수 있습니까 한을 선언하거나 긴 값을 강제로 문자열로 반환되고 정수 또는 길이가 아닙니다.)

Dim X As Variant 
X = "123" 
MsgBox TypeName(X) 
+0

출석과 수량이 둘 다 문자열이므로 작업하지 않는 이유 일 수 있습니다. 오류없이 그들을 어떻게 변경합니까? – user3178885

+0

내 답변에 코드 추가 ...이 페이지를 깨끗하게 유지하기 위해 이전 댓글 중 일부를 삭제할 수도 있습니다. MsgBox x를하고 y를 같을 때 어떤 값이 반환됩니까? –

+0

위의 코드를 시도했을 때 오류가 발생했습니다. x 줄을 강조 표시하고 형식이 일치하지 않습니다. 또한, 여전히 MsgBox x 및 y에 대해 'false'라는 단어가 표시됩니다. – user3178885

0

모든 것을 여기에서 정렬하고 그것을 이해하려고 시도한 후에, 나는 마침내 작동하도록했습니다. 도와 주셔서 감사합니다 B Hart. 저에게 맞는 마지막 공식이 있습니다.

Dim a As String 
Dim b As String 
Dim c As Double 
Dim d As Double 
Dim e As Double 
a = (Replace(SouvenirProgramFormG.Quantity, ",", "")) 
b = (Replace(SouvenirProgramFormG.Attendance, ",", "")) 
c = CDbl(a) 
d = CDbl(b) 
e = c/d * 100 
TextBox1 = e 

은 내가 SouvenirProgramFormG 페이지에서 계속 버튼이 코드를 숨긴 후 바로 새 TextBox1에 동일하게 다른 페이지에있는 텍스트 상자를 설정합니다. 그것은 꽤 아니지만 그것은 일을 끝낼 수 있습니다. 도와 주셔서 감사합니다!