お世話になります。
ロストフォーカス時に同じ配列同士の計算で躓いてしまいました。
txt_uhaは(0)〜(10)まで、ありテキストボックスになっています。
txt_uha(0)=1、txt_uha(1)=3だった場合、lbl_uha=4と表示したいのですが・
・・
どのようにしたらいいでしょうか?
現在のソースです↓このソースだとうまく動作しませんが・・・
Private Sub txt_uha_LostFocus(Index As Integer)
lbl_uha.Caption = txt_uha(index) + txt_uha(index)
'lbl_TAX_KIN.Caption = txt_uha(index) * 0.05
End Sub
ご指導お願いします。
なにがどううまくいかないのでしょうか?
>txt_uha(0)=1、txt_uha(1)=3だった場合、lbl_uha=4と表示したいのですが・・・
4にならず13になってしまう、ということでしょうか?
テキストボックス(つまり文字列)同士の加算(+)は、連結になります。
一度数値型に変換をしてから計算をしましょう。
また、数値に変換する際にテキストボックスに数値以外の文字が入っているとエラーになるので、
入力チェックを行うなりしてください。
お返事ありがとうございます。
状況としては4にならずに13になる、その通りです。
数値変換とはどのように行なったらいいでしょうか?
たとえば、
lbl_uha.Caption =CInt(txt_uha(index)) + CInt(txt_uha(index))
などです。
MSDNライブラリで「データ型変換関数」をキーワードに検索してみてください。
※上記では入力値のチェックをしていませんが、
実際には数値に変換できるかチェックしてから、
チェックしてから変換するようにしてください。
>lbl_uha.Caption =CInt(txt_uha(index)) + CInt(txt_uha(index))
としてみた所、lbl_uha.Captionに表示される内容がtxt_uhaの2倍の値が表示されてしまいました。和を求めたいのですが・・・
同じインデックスのテキストボックスの値を足していますから2倍になるのは当然ですね。
どういう処理をされたいんでしょうか?
txt_uhaからLostFocusした場合に、txt_uha全部の値を足す、とかなのでしょうか?
>txt_uhaからLostFocusした場合に、txt_uha全部の値を足す、とかなのでしょうか?
そうですね、この処理がしたいのですが・・・
ご教授お願い致します。
単純に全部のコントロールの値を加算するだけでは?
For文を使ってループでまわすなり、単にすべてのコントロールを書いてもいいですし。
それから無条件にLostFocusイベントで処理するのもあまりよろしくないですよ。