■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#462-0JavaScriptのevalのようなもののぐりん2002-03-21(木) 16:08
     #469-0RE#462:JavaScriptのevalのようなもの魔界の仮面弁士2002-03-22(金) 00:45
     #471-0RE#469:JavaScriptのevalのようなもののぐりん2002-03-22(金) 10:06
     #474-0RE#471:JavaScriptのevalのようなもののぐりん2002-03-22(金) 12:18
#462-0
JavaScriptのevalのようなもの
JavaScriptでいうevalのような関数は、VB上にありますか?

たとえば、以下のようなユーザ定義型
Public Type typ_aaa
    aaa1 As String
    aaa2 As String
    aaa3 As String
End Type
Public aaa As typ_aaa
と、以下のようなコントロール配列のフィールド
txt_aaa(0)、txt_aaa(1)、txt_aaa(2)
があった場合、

For i=1 to 3
    txt_aaa(i-1).Value = eval("aaa.aaa" & CStr(i)) ← evalに変わるものがほしい。
Next i

のようなことがしたいと思います。

何かわかる方いらっしゃいますか?
#469-0
RE#462:JavaScriptのevalのようなもの
> JavaScriptでいうevalのような関数は、VB上にありますか?

Access VBAやVBScriptにはありますが、VBにはありません。

ただし、操作対象がオブジェクトである場合には、TLBInfoのInvokeHookSubや、
VB6のCallByNameを使って代用することができます。

また、Microsoft Script Controlを併用することで、VBScriptの
EValを利用するという方法もあります。
#471-0
RE#469:JavaScriptのevalのようなもの
回答ありがとうございます。

> ただし、操作対象がオブジェクトである場合には、TLBInfoのInvokeHookSubや、
> VB6のCallByNameを使って代用することができます。

対象は、ユーザ定義型の中の文字列型変数なんで、これらは使えそうないですね。
でも、ヘルプを見ましたら、知っておくと便利な機能ですね。
 
> また、Microsoft Script Controlを併用することで、VBScriptの
> EValを利用するという方法もあります。

この方法だと、コーディングは楽になりそうですが、
Microsoft Script Controlを呼び出すことで、処理に弱冠、時間がかかりそうですね。

とりあえず、この方法でやってみて、処理時間が気にならないようなら、
やってみたいと思います。
#474-0
RE#471:JavaScriptのevalのようなもの
> この方法だと、コーディングは楽になりそうですが、
> Microsoft Script Controlを呼び出すことで、処理に弱冠、時間がかかりそうですね。

Set objScript = CreateObject("ScriptControl")
objScript.Language = "VBScript"
For int_LoopI = 1 To 12
     Me.imTxt_Tokki(int_LoopI - 1) = objScript.Eval(".LHTOK" & Format(int_LoopI, "00"))
Next int_LoopI
このようなイメージでやってみましたが、結局、うまく使うことが出来ませんでした。
VBScript自体が、ユーザ定義型使えないのからか、VB側の変数を読めないのか、
参照できませんのエラーが出ました。

For文を使わずに、1つ1つ読み込むことにします。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)