• ベストアンサー

変数名の取得

Dim Hensu(5) AS String とあった場合、 この変数名の "Hensu" を取得することは できないものでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • incho0922
  • ベストアンサー率41% (84/204)
回答No.2

変数名を取得した後、何をしたいのでしょうか? こんな方法もあるかと思います。 Private Type typHensu  HensuValue As String  HensuName As String End Type Dim Hensu(5) As typHensu For i = 0 to 5  Hensu(i).HensuName = "Hensu" Next と構造体を定義しておいて、HensuNameメンバに変数名を入れる方法です。変数名を取得したければ、 Hensu(1).HensuName とすればOKです。 もしくは構造体でなくクラスを使えば、デフォルトプロパティを使ったり、クラス初期化時に変数名をクラス自身が設定したりできるので、便利かもしれません。 ただ、その変数名"Hensu"を取得したとしても、どのような利用価値があるのかが謎です。それが冒頭の疑問ですので、補足していただければもっと良い方法や別の方からの意見が聞けると思います。

urourojp
質問者

補足

最初はgHensuしかたかったんですけど、1,2,3・・・と増えていって同じことを何度も書いていることに気づいたもので、それでまとめられないかなぁ。。と思いました。 Get_gHensu の パラメータの一つに変数名を与えたかったのです。 gHensu0() AS String gHensu1() AS String gHensu2() AS String gHensu3() AS String gHensu4() AS String gHensu0()=Get_gHensu("gHensu0",para0,para1,para2,para3) gHensu1()=Get_gHensu("gHensu1",para0,para1,para2,para3) gHensu2()=Get_gHensu("gHensu2",para0,para1,para2,para3) gHensu3()=Get_gHensu("gHensu3",para0,para1,para2,para3) gHensu4()=Get_gHensu("gHensu4",para0,para1,para2,para3)

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

その他の回答 (2)

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

VBレベル(番地を細工させない)の言語で変数名を取得する必要はあるのでしょうか。プログラマーは変数名でプログラムを書いています。 当然そのスペル(テキスト)は判っているわけです。 実行中に、他の名前に変わるわけではない。 だからそれを知らせる、プロパテイやメソッドはないと思う。 インタプリタやコンパイラが(特に後者)当初のソースでの変数名等と実番地を対照的にテーブル等で持っているかどうか知りませんが、持っていればその参照を許しても良いようには思う。昔昔の他の言語で、エラーなど出たとき、変数名で指摘してくれるとありがたいと思ったものですが、当時は行き詰まったアドレスしか表示しませんでしたが、今では変数名を指摘してくれるのがあるように思うが、それもチェック段階だけのようなきがする。

全文を見る
すると、全ての回答が全文表示されます。
  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

変数名を特定するものはなにでしょう? 変数名を特定するものが変数名ならば無理です。 ただ、入力されている値が決まっていて一意(重複していない値)の場合は、その値が入っている配列変数を取得することは出来ます。 Dim Hensu(5) as String Dim i as integer Dim Pick as String Pick="2" '欲しい値 for i=0 to 5 Hensu(i)=Str(i) IF Pick=Hensu(i) then Debug.print i '欲しい値と同じ値が入っている end if      '配列の数を表示します next i 簡単なプログラムですが、こんな答えでよろしいでしょうか?

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

関連するQ&A

  • Flash 変数宣言

    これまた超基本的な事ですが、 Flash(AS3)で変数宣言をする際の記述方法について質問させてください。 現在自分がやっている方法では、変数宣言する際 --------------------------------------------------------- var hensu:String = "あいうえお"; --------------------------------------------------------- としていて、これを例えばrootから ムービークリップ「mc」内に変数「hensu」を作る場合 --------------------------------------------------------- mc.hensu = "あいうえお"; --------------------------------------------------------- としています。これで特に問題ないのですが、 値を何も入れず、とりあえず変数だけ用意しておく場合、 rootに変数を作る時は --------------------------------------------------------- var hensu:String = new String(); --------------------------------------------------------- としています。また、 --------------------------------------------------------- var hensu:String; --------------------------------------------------------- だけでも、変数が作成されているよう?なのですが・・・ trace()で調べると new String()の場合は値が"空白"(何も表示されない) hensu:String;の場合は"null"になります。 という事はどちらの場合でも単純に変数だけ作るのであれば これで機能していると考えてもよいのでしょうか? この"空白"と"null"の違いを理解したいです。 また、rootからムービークリップ「mc」内に変数「hensu」を作る場合として、 --------------------------------------------------------- mc.hensu = new String(); --------------------------------------------------------- とすれば、大丈夫ですが --------------------------------------------------------- mc.hensu:String = new String(); --------------------------------------------------------- や --------------------------------------------------------- mc.hensu:String; --------------------------------------------------------- ではエラーが出ます。 root上に変数を作る時の --------------------------------------------------------- var hensu:String = new String(); --------------------------------------------------------- や、別の場所に変数を作る場合でも --------------------------------------------------------- mc.hensu = new String(); --------------------------------------------------------- では問題ないのに、 ●●●.変数:型 = new 型(); の形にするとエラーが出るのはなぜなのでしょうか? (記述方法が間違っているといわれればそれまでですが・・・)

  • C#で変数名の取得

    C#2.0を使っています。 例えば string s = "test"; という変数名「s」があったときに、この変数名を Reflectionか何かを利用して取得することはできないでしょうか? s.GetType().NameなどでString(型)は取得できるのですが 変数名「s」を取得したいのです。

  • グローバル変数などについて

    Option Explicit Dim str1 As String '・・・(1) Sub テスト() Dim str2 As String '・・・(2) str1 = "テスト1" str2 = "テスト2" MsgBox str1 MsgBox str2 End Sub (1)はグローバル変数と言うとの事ですが (2)は何変数と言うのでしょうか? ローカル変数ですか? また、(1)がdimではなく、 Public str1 As String となった場合でも、 プロシージャーの外にあれば、グローバル変数と言うのでしょうか?

  • グローバルな変数を変数名を指定せずに変更することができるか?

    <script> g_hensu1 = "変数1"; g_hensu2 = "変数2"; g_hensu3 = "変数3"; g_hensu4 = "変数4"; g_hensu5 = "変数5";  ・  ・ 上記のようにhtml上に定義されている変数を 変数名を指定せずに変更できないでしょうか? 例えばHenkoという関数があり、 Henko(g_hensu1, g_hensu2, g_hensu3); とすると、g_hensu1~3の変数の値を空文字列にするという関数は どのような方法が考えられるでしょうか?

  • サブフォームに変数を代入し、RecordSourceの値を取得したい

    サブフォームに変数を代入し、RecordSourceの値を取得したいのですがうまくいきません。 Sub test1() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource End Sub ******************************************************************* Sub test2() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource MsgBox Forms(フォーム).Controls(サブフォーム).RecordSource End Sub オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) ******************************************************************* Sub test3() Dim サブフォーム As String Dim フォーム As String フォーム = "土台" サブフォーム = "フォーム1" MsgBox Forms(サブフォーム).RecordSource End Sub 実行時エラー'2450' マクロの式またはVisual Basic コート゛で参照されている 'フォーム名'フォームが見つかりません。 ******************************************************************* test1~3のうち test1のみはうまくいくのですが 変数を代入したいです。 ヘルフ゜のには Forms![受注]![受注サブフォーム].Formとなってますが これじゃ変数を代入できないですよね。 どうすればサブフォームに変数を代入しつつ、RecordSourceの値を取得できるのでしょうか? よろしくお願いします。

  • エクセルVBAでの変数

    いつもお世話になります。 今回の『壁』は”変数”です。 変数の中に更に変数を持たせることはできますか? 何をしたいかと言いますと… dim mon1 as string dim mon2 as string dim mon3 as string dim mon4 as string dim mon5 as string dim tue1 as string dim tue2 as string …というように月曜から日曜までの頭3文字プラス1~5の組み合わせの変数を作りたいのですが、 この調子で作っていくと35コになってしまいます。 そこで、曜日の頭3文字より後ろは決まって1~5のため、 dim i as integer for i = 1 to 5 next i …と組み合わせられないかと思ったのです。 どなたか知恵をお貸しください。 よろしくお願いします。

  • 変数名の付け方

    変数名の前にアンダーバー「_」をつけて「_hensu」などどしている変数名がありますが、このアンダーバーはどんな意味があるのでしょうか。 昔からある何かの習慣なのでしょうか。

    • ベストアンサー
    • Java
  •  日付型なら変数の先頭になんてつけてますか?

    変数名で、 文字列型なら Dim str組織名 As String 数値型なら Dim intNo As Long としてるのですが、 日付型なら変数の先頭になんてつけてますか? Dim date月日 As Date にしようかなと思ったのですが なんかくどいかなって感じます。

  • 変数を動的に作るには?

    変数を作成する際には必要な分だけ一つずつ宣言する必要があるのでしょうか? 例えば、連番を格納する文字列型変数を一時的に100個必要だとすると Dim textdat1 As String = "Number1" Dim textdat2 as String = "Number2" Dim textdat3 as String = "Number3"      ・      ・      ・ と100個宣言しないといけないと思うのですがこれを For i As Integer = 1 To 100 Dim textdat(i) As String = "Number" & i Next i という様な形で変数を作成することは出来ないのでしょうか。 初歩的な質問かもしれませんが、よろしくお願いします。

  • VBAでユーザ定義変数名をシートから取得したい

    VBAでユーザ定義型変数を宣言する際、 要素名をシートに記述した名称にすることは可能でしょうか? 【例】 シート「Sheet1」のセルA1とA2に 「SYAIN_NO」と「SYAIN_NM」が入力されています。 ユーザ定義型変数syainの要素名1と要素名2をシートから名称を取得し [取得前] Type syain 要素名1 As Long 要素名2 As String End Type [取得後] Type syain SYAIN_NO As Long SYAIN_NM As String End Type にしたいです。 今後、シートに名称を追加することで変数を拡張したいと考えています。