• ベストアンサー

変数に変数を使いたいのですが、できますでしょうか?

変数に変数を使いたいのですが できますでしょうか? 【↓やりたい事のイメージ】 ------------------------------ for i in 1..3 hensuu【ここにi】 = i end ------------------------------ 結果として 変数「hensuu1」に1が代入され 変数「hensuu2」に2が代入され 変数「hensuu3」に3が代入されるようにしたいのです。 宜しくお願い致します。

  • Ruby
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

以下のようにしてください。 ---------------------- for i in 1..3 eval("$hensuu#{i} = i") end #各変数の内容を確認する p $hensuu1 p $hensuu2 p $hensuu3 ----------------- 実行結果は以下の通り 1 2 3

okok1678
質問者

お礼

ありがとうございました! おかげさまで上手くいきました!

その他の回答 (2)

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.2

> 配列にしない理由は > hensuu【i】 = Class.new > という感じで使いたいからです hensuu[i] = Class.new との違いがわかりません。補足にどうぞ。

okok1678
質問者

補足

すみません。 勘違いしていたようで hensuu[i] = Class.newのような記述でも 動作するようです。 動作しない物だと思っていました。 ですが、evalでも実現したいと思いますので 宜しくお願い致します。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

evalを使ってできないわけではありませんが.... 配列にしないのは、なにか理由があるのですか?

okok1678
質問者

お礼

お返事ありがとうございます! evalですか。 ちょっと調べて見ます。 配列にしない理由は hensuu【i】 = Class.new という感じで使いたいからです

okok1678
質問者

補足

evalについて調べてみたのですが どうも使い方が理解できませんでした。 もし宜しければ、使い方をご教授お願い致します。 以下のようにやると良い気がしましたが エラーが出てしまいました。 for i in 1..3 eval("$hensuu"+i.to_s) = i end print ($hensuu1) print ($hensuu2) print ($hensuu3)

関連するQ&A

  • "$"を変数に入れる

    CGIを改造中です。 変なことをしているかもしれませんが、変数に$と別の変数を入れたいんです。 「xx.cgi?h=1」でCGIに変数を送り、$hensuuに「$hen1」と代入したいんです。 で、以下のようにやってみました。 $hensuu = '$hen'; もちろん、「print "$hensuu\n";」とすると「$hen」と表示します。 $hensuu = '$hen'$h;や $hensuu = '$hen'"$h";とすると、エラーになりストップします。 どのようにしたらうまくいくのでしょうか?

    • ベストアンサー
    • Perl
  • 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文の中で指定する場合とでは結果は同じと思うのですが 結果以外の部分で見た場合どちらで行うほうがいいのでしょうか?

  • [ExcelVBA] Module1で定義した変数の(代入した)値を、Module2でも使う方法

    基本中の基本のことで誠に申し訳ございません。 ある標準Moduleで宣言した変数に値を代入します。 その後、別のModuleでその変数を使用しますが、 その変数の中の値が消えてしまいます。 たとえば下記のように、プログラムを書きます。 test1を実行すると、続いてtest2も実行されます。 この場合、変数の値が0になってしまいます。 このような場合どうやったらいいのでしょうか? Hensuu1の値をセルに一度出力させて、 別のModuleで、セルの値をもう一度変数に代入させて使用する という方法で何とかしていたのですが、大変で困っています。 Module1に記載------------ dim Hensuu1 as integer sub test1() Hensuu1 = 100 test2 end sub ------------------------- Module2に記載------------- sub test2 range("A1") = Hensuu1 end sub --------------------------

  • 変数の添え字をforで処理する方法。

    変数の添え字をforで処理する方法。 今朝、 http://okwave.jp/qa/q6000492.html で質問させていただき、この方法は解決したのですが、 $_POST[hensuu1] $_POST[hensuu2] .... と言う場合に、今朝の方法を応用して、 for ($n=1; $n<=10; $n++){ echo $_POST[{'hensuu'.$n}]; } と記述しても旨く処理できずに、 Parse error: syntax error, unexpected '{', expecting ']' in ・・・・・ のようなエラーが出てしまいました。 解る方いらっしゃいましたらご教授お願い致します。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Excelで変数名に変数を使用(前はできたのに…)

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=614375 で以前も教えていただいたんですが、なぜかできなくて…。 Sub Hensuu() For i = 1 To 5 Gyou(i) = i * i MsgBox Gyou(i) Next i End Sub と試しにしてみたんですが、 「コンパイルエラー:  Sub または Function が定義されていません。」 と出てしまいました。 どこがいけないのでしょうか?

  • shellで$入り変数に値を代入する方法

    shellで、変数への代入処理で困っています。 下記サンプルソースのように代入する変数自体にfor文で使用している変数が含められるようにしたいのですが、下記の通りだと実行できません。 うまく意図通りに動かす方法はございませんでしょうか? ---------------------------------------------------------------- #!/bin/sh #変数初期化 n00=0 n01=1 n02=2 n03=3 n04=4 #メインルーチン for i in 00 01 02 03 04 ; do temp=`eval echo '$'"n"${i}` #変数値をtempに格納 n${i}=`expr ${temp}+1` #各変数の値を+1する。 n${i}の部分をどのようにすればよいか不明 done ---------------------------------------------------------------- # 望ましい結果 echo ${n00} -> 1 echo ${n01} -> 2 : ※制約事項 ・ shのみ使用可能で、ksh,csh.bashは使用不可 ・ n[0]=0,n[1]=1・・・というように配列の使用は無し

  • excel/vba/public変数

    excel VBAで下記のようなコードを書きました。 他のプロシージャでも共通の変数を使用したいと思っています。 その為、public変数を宣言して使用したいと設定しましたが。 うまくいきません。 testmainを実行し、iに何も入っていないことを確認しました。 その後『1』を代入し、testmainは終了します。 testsubをその後実行し、iに先ほど代入された値を確認しようとしても何も代入されていない状態です。 全プロシージャでその変数を使用したいと思っているのですが、 何か方法、もしくはこのような使用方法ではないのでしょうか? public変数を使用してもプロシージャが終了すれば変数はクリアされるのでしょうか? 構造化の方法の問題上参照渡しや、戻り値など、指定する方が複雑になっていきます。 ご指導よろしくおねがいします。 Public i As Variant Sub testmain() MsgBox test i = 1 End Sub Sub testsub() MsgBox i End Sub

  • このマクロについて…(オーバーフローといわれる)

    なんとなくの流れですが、D列からH列まで入力箇所があって、Iに合計が出るようになっています。 D列は10000円、E列は5000円、F列は1000円、G列は500円、H列は100円というような金種表のようなものです。 Iは上記の金額に入力した数値をかけて、その合計を出すように数式が入っています。 そしてボタンを押すと、この数値をそれぞれの変数に代入するようになっています。 【例】 I6→hensuu1 I7→hensuu2 このI列の合計値が32800以下だった場合、通常とおりに動くのですが、32800以上だった場合、「オーバーフローしました」と エラーが出てしまいます。 これは一体なぜでしょうか? コードの一部ですが載せておきます。 If Range("I6") = "" Then hensuu1 = 0 Else hensuu1 = Range("I6") End If If Range("I7") = "" Then hensuu2 = 0 Else hensuu2 = Range("I7") End If

  • 変数が増えてしまうのはなぜだか教えてください。

    こんにちは、マクロ初心者ではないつもりですが、基本ができていないのか、以下のSubで、変数の値が増えてしまいます。i = 3のままだと思っていたのですが、シートが移動するにつれてiの値が増えてしまうのは何故でしょうか。教えてください。 Sub tes() Dim i As Integer Dim ws As Worksheet i = 3 Debug.Print i For Each ws In Worksheets ws.Select For i = 1 To i Debug.Print i Cells(i, i) = i Next Next End Sub 新規のブックに書きました。Sheetは1~3です。

  • ACCESSの変数で

    超初心者です。お世話になります。 VBAの変数について教えて下さい。 例えば変数1~変数10まであるとします。 そこに氏名1~氏名20までを代入します。 そのとき、一つずつしていると、効率が悪いので、 For Next を使いたいと思います。 For  繰り返し = 1 to 10 で、変数の数字の部分を繰り返しで増やしていこうと思ったのですが、 "変数"と"繰り返し"のくっつけ方がどうも上手くできません。 どのようにしたらよいのでしょうか? あと、このように、Me.○○の部分も変数と変数をくっつけたいのですが、無謀でしょうか? わかりにくい説明で申し訳ありませんが、よろしくお願い致します。 

専門家に質問してみよう