• ベストアンサー

VBAのFor文で省略するこはできますか?

初心者です。 ExcelのVBAで質問です。 Val(txt数値S1) Val(txt数値S2) Val(txt数値S3) Val(txt数値S4) Val(txt数値S5) Val(txt数値S6) Val(txt数値S7) Val(txt数値S8) 上記の変数に好きな数値を入力できる変数があるのですが、 これを配列として書かずに、 For i = "txt数値S"(1 To 8)のように記入するような簡潔に書く方法はありますしょうか?

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (721/1492)
回答No.2

Val が付いているという事は txt数値S1~ txt数値S8は文字型ですか。 であればできません。 txt数値S1 とtxt数値S2 は全く別の変数。領域も違う所に作られます。 1つ1つ代入していくしかありません。 サンプル Option Explicit ' Sub Macro1() Dim txt数値S1 As String Dim txt数値S2 As String Dim txt数値S3 As String Dim txt数値S4 As String Dim txt数値S5 As String Dim txt数値S6 As String Dim txt数値S7 As String Dim txt数値S8 As String Dim 数値(7) As Integer Dim OutData As String Dim Index As Integer ' txt数値S1 = "1A" txt数値S2 = "2A" txt数値S3 = "3A" txt数値S4 = "4A" txt数値S5 = "5A" txt数値S6 = "6A" txt数値S7 = "7A" txt数値S8 = "8A" ' 数値(0) = Val(txt数値S1) 数値(1) = Val(txt数値S2) 数値(2) = Val(txt数値S3) 数値(3) = Val(txt数値S4) 数値(4) = Val(txt数値S5) 数値(5) = Val(txt数値S6) 数値(6) = Val(txt数値S7) 数値(7) = Val(txt数値S8) ' For Index = 0 To 7 OutData = OutData & " " & 数値(Index) Next Index MsgBox OutData End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

前の質問に書いた通り、質問が変な方向に向いている。 ここの回答者は、礼儀正しく、おかしいなどは書かない。ぜひアドバイザーを見つけること。 下記はBasic初期のやり方と笑われるかもしれないが、思い付きで。 Sub test02() Dim txt数値S(5) txt数値S(1) = 1 txt数値S(2) = 2 txt数値S(3) = 3 txt数値S(4) = 4 Dim s As Integer '---- s = 0 n = 1 p1: MsgBox txt数値S(n) s = s + txt数値S(n) MsgBox "中間合計" & s n = n + 1 If n > 4 Then GoTo p2 GoTo p1 p2: MsgBox "合計" & s End Sub 配列を使わず、文字列の名前の最後の部分で判別しようとしたが、うまく行かなかったので、上記で逃げた。案外簡単な方法があるのかも。 繰り返しは、For 以外にWhileも使えると思う。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELのFor文について

    EXCELのFor文について EXCELのFor~to~next文について教えてください。 現在、Kishaku_Min(数値)からKishaku_Max(数値)までの数値をひとつずつ取得するようにしています。 Dim Kishaku_Min As Integer Dim Kishaku_Max As Integer For i = Kishaku_Min To Kishaku_Max たとえば Kishaku_Min = 1 で Kishaku_Max = 5 の場合 連続するセルに1、2、3、4、5 と表示されます。 これを逆に5、4、3、2、1 と表示するようにしたいのですが、どのようにすればよいのでしょうか。 For文では無理なのでしょうか? VBA初心者です。どなたかご教授ください。

  • ExcelのVBAについて質問です

    【初心者です】 現在独学でExcelのVBAを学んでいるのすが、 数値を入力する箱(= a) を8個作り、その数値を自分で入力したのちに、 For文で簡潔に合計した数値を出力させたいのですが、やり方が分かりません。 Suuchiの数は8個で、それぞれに数値を入力して、出力する流れです。 下記の文までは思いついたのですが「???」に該当するもとのをどのように作成すれば良いのか教えていただけないでしょうか? また、そもそもの書き方が違う場合にも指摘していただけると助かります。 Dim Suuchi(0 To 7) As Integer '数値数 Dim total As Integer '合計値 Dim i As Integer 'カウンタ数値 For i = 0 To 7 Suuchi(i) = ??? total = total + Suuchi(i) Next i If chkチェックボタン.Value Then MsgBox "数値の合計は「" & total & "」です", , "数値合計値" End If

  • For文と配列

    下のFor文でセルに0から9999の数字を入力しようとしたのですが 「forで指定された変数は既に使用されています」というエラーがでます。 Dim i As Integer Dim Num(3) As Integer For Num(0) = 0 To 9 For Num(1) = 0 To 9 For Num(2) = 0 To 9 For Num(3) = 0 To 9 Cells(i, 1) = Num(3) + Num(2) * 10 + Num(1) * 100 + Num(0) * 1000 i = i + 1 Next Num(3) Next Num(2) Next Num(1) Next Num(0) 他には何にも書いていないマクロなので他所で使用しているとも思えないですが うまくゆきません。 続きの作業でNum()を配列として作業したいのでこの形を変えたくありません。 何がいけないのでしょう?

  • エクセルVBAの配列について

    エクセルVBAの配列について VBAをはじめたばかりの初心者です。 現在、下記のようにデータを配列の中に入れ、 別シートに書き出そうとしております。 (配列へ読み込むところのみ) Dim 配列(1 To 件数, 1 To 9) As Variant For j =1 To 件数 For i = 2 To L If Cells(i, 2).Value = Tx_month Then For k = 3 To 11 配列(j, k - 2) = Cells(i, k).Value Next k End If Next j,i 現状では、データの最終行のみを「件数」分書き出してしまいます。 jとiのForが重なっているからだと思うのですが、どう書き直したら良いか分かりません。 質問をさせていただくのも初めてなので、分かりづらく恐縮ですが お力添え頂けますと幸いです。 どうぞ宜しくお願い致します。

  • 【VBA】for each文でListbox値取得

    VBA7.1でfor each文を使い、Listbox(Lst1)の全ての値を 取得したいと思っています。 For Each 変数 In コレクションや配列 のコレクションや配列には何を指定したらよいでしょうか。 よろしくお願いいたします

  • For...Nextの文

    excel VBでFor...Nextをしようしているのですが、 終わりの行を変数にしたいのです。 For i = 2 To Owari : Next というような感じです。 このような使い方ってできるのでしょうか?

  • VBAで数値入力について

    Excel VBAで、UserFormにTextBoxを配置しています。 TextBoxに入力された数値は、半角数値で正数で小数点以下の桁数は1までと制限したいです。 現在は下記のプログラムにしているのですが、「1.2.3」と入力されるとエラーが表示されずに通ってしまいます。。。 どのようにしたらよいのでしょうか。 For i = To Len(TextBox1.Text) If Not Mid(TextBox1.Text, i, 1) Like "[0-9 And .]" Then Message"半角数値ではありません" Exit Sub End If Next i If Val(Text1.Text) = 0 Or TextBox1.Text = "" Then Message"数値を入力してください" Exit Sub End If

  • for文を用いたArrayについて

    はじめまして、初心者で配列がよくわからず困っているので、教えていただけないでしょうか。 chn = new Array("ch1","ch2","ch3",...(中略)...,"ch100"); というように配列を作りたいんですが、for文などを用いて簡潔に書くことはできるでしょうか? ご教授ヨロシクお願いします。

  • VBA 変数を使うべき?

    VBA 変数を使うべき? VBAを独学で勉強中のものです。 エクセルVBAでデータが入っている行数分処理を行いたい場合などに ------------------------------------------------ lastRow = cells(rows.count,1).end(xlup).row for i = 1 to lastRow ・・・ next i ------------------------------------------------ などと最終行を変数に代入して使う場合と ------------------------------------------------ for i = 1 to cells(rows.count,1).end(xlup).row ・・・ next i ------------------------------------------------ などと直接for文の中で指定する場合とでは結果は同じと思うのですが 結果以外の部分で見た場合どちらで行うほうがいいのでしょうか?

  • ACCESS VBA のFor文のStepについて

    ACCESS VBAでFor文を使った構文を作っているのですが、Stepについて+、-は使えたのですが、乗算、割り算は使えないのでしょうか? For i = 10 to 10000 step *10 ~処理 Next i にすると"*"でコンパイルエラーが出ます。 10、100、1000、10000の処理がしたいのです。 Forでは無理なのでしょうか?