- ベストアンサー
テキストボックスの数値をFor~Nextで計算して合計を出す方法
- VS.NET2003使用者です。ExcelのVBAより最近転向しました。テキストボックスの数値を1個飛びに計算したいのですが、うまく行きません。
- テキストボックスの数値を1個ずつ変換して足して行く方法では問題なく計算できますが、よりシンプルな方法を試してみたくなりました。
- For~Next文を使用してテキストボックスの数値を1個飛びに取得し、合計を計算する方法を試しましたが、'System.InvalidCastException' エラーが発生してしまいます。これについての解決策は見つかっていません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> VS.NET2003使用者です。 ですか・・・ VB.NET2003の場合、「Controlsコレクション」で、「コントロール名」は使えないはずです。 #「Integer型のIndex指定のみ」 「Control.ControlCollection.Item プロパティ」 (http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemwindowsformscontrolcontrolcollectionclassitemtopic.asp) VB2005なら、コントロール名が使用可能なんですが・・・ 「Control.ControlCollection.Item プロパティ」(.NET Framework 2.0) (http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.controlcollection.item(VS.80).aspx) と言うことで、別の方法を使ってください。 #例えば、自分でCollectionや配列を準備して設定するとか・・・
その他の回答 (2)
- t2hayashi
- ベストアンサー率46% (102/219)
CIntをClngにしても一緒ですか? エラーを見る限りは「textbox1」の値をIntに変換できないようなので ・Int範囲外の値(±30000以上の数値がある) ・長さゼロの文字列がある ・Nullがある などでしょうか、.netは知りませんがClngにしてNZ関数などで 数値が無い場合の対応を入れてみてはいかがでしょうか。 STL = CLng(NZ(Me.Controls("textbox" & Cstr(N)).Value,0)) こんなですかねぇ。 はずしていたらすみません。
お礼
回答ありがとうございました。 単独では値は取得できるのですが、For~Nextで繰り返し処理をする場合 コントロール名(TextBox#)を取得できず悩んでいました。 今回は一個ずつ計算していく方法をとりました。
- bin-chan
- ベストアンサー率33% (1403/4213)
.Netに触れてはいませんが。 型宣言がTTLに対してのみ有効なのでは? Dim N, STL, TTL As Integer を Dim N As Integer Dim STL As Integer Dim TTL As Integer としたらどうなりますか?
お礼
回答ありがとうございました。 型の宣言方法は、質問で書いた方法でも問題無しです。
お礼
回答・情報ありがとうございました。 別の方法を検索して実行したところ、若干の手応えがありましたが 解決には至りませんでした。 私は技術者ではなく素人です。 プログラミングの深いところは、恥ずかしながら分かりません。 ExcelのVBAで可能だったことは、VBでも可能だと思っていました。 バージョンによっての違いも確認してきました。 今回は一個ずつ計算していく普通の計算式で対応しました。 計算の必要は無いといえば無いのですが・・・