2016-10-19 2 views
0

제 양식에 텍스트 상자가 두 개 있지만 그 중 두 개는 특별합니다. 이름이 tbVolume 인 텍스트 상자이고 이름이 tbWeight 인 텍스트 상자입니다. 다른 매개 변수VBA 텍스트 상자의 변경은 두 번째 텍스트 상자에 영향을 주며 그 반대의 경우도 마찬가지입니다.

I가 tbVolume을 변경하는 경우는, tbWeight 대한 값을 계산하지만, I는 tbWeight (tbVolume 대한 값을 계산)에 동일한 방법을 추가 할 때 부피 변화 중량 변화 때문, 변경 주기적 링크 일종의 작성 체중의 변화량 등 ...

값이 사용자 또는 응용 프로그램에 의해 변경되면 절차에 알릴 수있는 tbVolume_Changed()/tbWeight_Changed()의 일부 인수가 있습니까?

또는이 트윈 텍스트 문제를 해결하는 방법에 대한 다른 아이디어가 있습니까? 당신은 텍스트 상자의 값을 변경

Private Sub tbVolume_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    ' do everything you want to do 
End Sub 

탭이나 마우스 클릭과를 통해 그것을 종료 :

Private Sub tbWeight_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    ' do everything you want to do 
End Sub 

물론 :

+0

시도 :'AfterUpdate' ... – Fusseldieb

+1

@Fusseldieb 나는 AfterUpdate를 테스트했다. 내 경우와 같은 효과가있다. :) – Irithyll

답변

1

아 .. 마지막으로 너무 쉽게, 단지 두 개의 새로운 논리 값이었고, 모든 것이 잘 작동 :

Dim editingVolumeByApp As Boolean 
Dim editingWeightByApp As Boolean 

Private Sub tbVolume_Change() 
    If editingVolumeByApp = False Then 
    '... 
    editingWeightByApp = True 
    tbWeight.Value = finalVolume * CDbl(tbMatDensi.Value) 
    editingWeightByApp = False 
    '... 
    End If 
End Sub 

Private Sub tbWeight_Change() 
    If editingWeightByApp = False Then 
    '... 
    editingVolumeByApp = True 
    tbVolume.Value = finalVolume * CDbl(tbMatComplCoef.Value) 
    editingVolumeByApp = False 
    '... 
    End If 
End Sub 

그리고 잘 :-) 작동

0
대신 tbWeight_Change()

또는 tb_Volume_Change()는 다음을 사용할 수 있습니다 텍스트 상자의 다른 값이 변경됩니다.

텍스트 상자에 쓰는 동안 병렬 출력을 원하면 계산 된 값을 표시하기위한 추가 텍스트 상자를 사용할 수 있습니다.

관련 문제