No.1ベストアンサー
- 回答日時:
おはようございます。
一例ですが、下記でどうでしょうか?
Private Sub CommandButton1_Click()
Dim i As Long, 最初 As Long, 終わり As Long, 合計 As Long
最初 = TextBox1.Value
終わり = TextBox2.Value
合計 = 0
For i = 最初 to 終わり
合計 = 合計 + i
Next i
Label3 = 合計
End Sub
おはようございます。
求めていた動作になりました。
回答を参考にDo~Loopでも書いてみましたが、無事に実行できました。
ありがとうございます!
Private Sub CommandButton1_Click()
Dim i As Long, 最初 As Long, 終わり As Long, 合計 As Long
最初 = TextBox1.Value
終わり = TextBox2.Value
合計 = 0
i = 最初
Do While i <= 終わり
合計 = 合計 + i
i = i + 1
Loop
Label3 = 合計
End Sub
No.2
- 回答日時:
Label3 = 0
For i = 最初 to 終わり
Label3 = Label3 + i
Next i
No.3
- 回答日時:
ええと...
Label3 = Label3 + (最初 + i)
これがおかしいですね。
2回ループすると ”最初” の値が2回足されます。
3回ループすると ”最初” の値が3回足されます。
…
この、”最初” の値を足すのはループの外に置きましょう。
・・・超余談・・・
数学的にはループを使わなくても別の計算式でもできるんですけどね。
1からnまでの数を足した値は次のように求めることができます。
n×(n+1)÷2
1から3なら、
■
■■
■■■
という三角形を考える。
そして同じ形の物をもう一つ用意してひっくり返して並べる。
■ ■■■
■■ ■■
■■■ ■
で、合体させて長方形にする。
■■■■
■■■■
■■■■
すると、縦は3、横は3+1の長方形になる。
面積は普通に3×(3+1)で求められる。
でも欲しいのはその半分の値。
で、2で割る。
3×(3+1)÷2
=3×4÷2
=6
こんな考え方になります。
・・・
そんなわけで、1から60までの値を足す計算は
60×61÷2=1830
で求められます。
で、ここから1から9までの値を足した数値を引けばいい。
与えられている数値は10なので、
(10-1)×10÷2=45
を引くという事になります。
すると
60×(60+1)÷2-(10-1)×10÷2
すなわち、
「終わり」×(「終わり」+1)÷2 - (「始め」-1)×「始め」÷2
この計算でも良いって事になります。
これなら For Next や Do while を使わなくても良い。
For Next や Do whileで行き詰った場合は、計算での算出方法も検討しようと思います。
詳細にありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングについて。 1つ...
-
どなたかこのプログラミングを...
-
ネットワークループとルーティ...
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
イベントの発生を待つ
-
UWSCの終了の仕方
-
多重ループの抜けだし方
-
【VBA】指定の範囲から特定の文...
-
VBA横データを縦にしたいです
-
DOSコマンドのループ内のTIMEコ...
-
vb.netからエクセル関数書き込み
-
ループフリー
-
これの名称なんて~の?ダッフ...
-
VLC media Playerでのループ再生
-
スレッド起動したフォームを正...
-
CASL2のアセンブリ(?)で質問...
-
テキストボックスの名前に変数...
-
範囲指定したセルを1つずつ飛...
-
VisualStudioにてモザイクの画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
エクセルの当番表を作っていま...
-
VBA for i=1 to lastrow
-
「偶数・奇数の和」のフローチ...
-
アクティブセルから、A列最終行...
-
DoEventsが必要な理由について
-
vb.netからエクセル関数書き込み
-
GIFアニメをループさせたくない
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
流れ図(フローチャート)が分か...
-
乱数の桁数指定、または範囲指定。
-
テキストボックスの名前に変数...
-
CSVファイルの特定の行だけを読...
-
vb.netです。2次元配列の要素を...
おすすめ情報