• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストボックスの数値をFor~Nextで1個飛びに計算して合計を出したい)

テキストボックスの数値をFor~Nextで計算して合計を出す方法

このQ&Aのポイント
  • VS.NET2003使用者です。ExcelのVBAより最近転向しました。テキストボックスの数値を1個飛びに計算したいのですが、うまく行きません。
  • テキストボックスの数値を1個ずつ変換して足して行く方法では問題なく計算できますが、よりシンプルな方法を試してみたくなりました。
  • For~Next文を使用してテキストボックスの数値を1個飛びに取得し、合計を計算する方法を試しましたが、'System.InvalidCastException' エラーが発生してしまいます。これについての解決策は見つかっていません。

質問者が選んだベストアンサー

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.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や配列を準備して設定するとか・・・

takachan7272
質問者

お礼

回答・情報ありがとうございました。 別の方法を検索して実行したところ、若干の手応えがありましたが 解決には至りませんでした。 私は技術者ではなく素人です。 プログラミングの深いところは、恥ずかしながら分かりません。 ExcelのVBAで可能だったことは、VBでも可能だと思っていました。 バージョンによっての違いも確認してきました。 今回は一個ずつ計算していく普通の計算式で対応しました。 計算の必要は無いといえば無いのですが・・・

その他の回答 (2)

  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.2

CIntをClngにしても一緒ですか? エラーを見る限りは「textbox1」の値をIntに変換できないようなので ・Int範囲外の値(±30000以上の数値がある) ・長さゼロの文字列がある ・Nullがある などでしょうか、.netは知りませんがClngにしてNZ関数などで 数値が無い場合の対応を入れてみてはいかがでしょうか。 STL = CLng(NZ(Me.Controls("textbox" & Cstr(N)).Value,0)) こんなですかねぇ。 はずしていたらすみません。

takachan7272
質問者

お礼

回答ありがとうございました。 単独では値は取得できるのですが、For~Nextで繰り返し処理をする場合 コントロール名(TextBox#)を取得できず悩んでいました。 今回は一個ずつ計算していく方法をとりました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

.Netに触れてはいませんが。 型宣言がTTLに対してのみ有効なのでは? Dim N, STL, TTL As Integer を Dim N As Integer Dim STL As Integer Dim TTL As Integer としたらどうなりますか?

takachan7272
質問者

お礼

回答ありがとうございました。 型の宣言方法は、質問で書いた方法でも問題無しです。

関連するQ&A