変数の定義の仕方をご教授ください

このQ&Aのポイント
  • 変数を宣言する際に、データ型を指定する必要があります。
  • この場合、scとjsのデータ型はオブジェクト型です。
  • dim sc as Objectとdim js as Objectと宣言することで、エラーを解消できます。
回答を見る
  • ベストアンサー

変数の定義の仕方をご教授ください。

Option Explicit Function EncodeURI(uri As String) As String Set sc = CreateObject("ScriptControl") sc.Language = "JScript" Set js = sc.CodeObject EncodeURI = js.encodeURIComponent(uri) End Function ------------------------------------------- をデバッグすると「sc =」と「js =」の部分が「変数が定義されていません」となってしまいます。 変数を宣言する時に、 dim sc  as まではわかるのですが変数のデータ型を何にしてあげればいいのでしょうか?

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

  • ベストアンサー
  • nao-y
  • ベストアンサー率58% (111/190)
回答No.1

Object で良いと思いす。

LDUZOAF
質問者

お礼

Objectでできました!ありがとうございました。

関連するQ&A

  • Excel VBAでブラウザのリンクをクリックするには

    Excelのバージョンは2003です。 VBAで出発地から到着地からNavitimeのサイトに接続して距離を取得するようなプログラムを作成していますが… 下記のように記述しています。 Private Sub Workbook_Open() Dim ie As InternetExplorer Dim addr0 As String Dim addr1 As String Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True addr0 = "住所1" addr1 = "住所2" ie.navigate "http://www.navitime.co.jp/?keyword0=" & urlEncode(addr0) & _ "&keyword1=" & urlEncode(addr1) & _ "&ctl=0604" Do While ie.Busy = True Do While ie.readyState <> 4 DoEvents Loop Loop End Sub Public Function urlEncode(str As String) As String Set sc = CreateObject("ScriptControl") sc.Language = "Jscript" Set js = sc.CodeObject urlEncode = js.encodeURIComponent(str) End Function リンクをクリックするにはどのようにすればいいのでしょうか。 アドバイス宜しくお願いします。

  • VBAのJScriptのeval()の挙動について

    VBAのコードを調べていますが、 JScriptで記述されている部分があり、 この部分でよく分からない挙動があるので教えてください。 (JSONデータをパースしているコードです) 具体的には、(実際のコードを簡略化したもの) ---------------------------------------- Sub test() Dim x As String Dim sc As Variant Dim y As String x = "{""A"":""d"",""B"":""e"",""C"":""f""}" Set sc = json_perse(x) y = sc.CodeObject.getValue("B") Debug.Print y End Sub Public Function json_perse(ByVal x As String) As Variant Dim sc As Object Set sc = CreateObject("ScriptControl") With sc .Language = "JScript" .AddCode "function getValue(){ var $tmp=''; for(var $i = 0; $i < arguments.length; $i++){ $tmp += ""['"" + arguments[$i] + ""']""; } return eval('e' + $tmp); }" .AddCode "var e = eval(" & x & ");" End With Set json_perse = sc End Function ------------------------------------------ のコードを実行すると、 getValue()の引数で指定した文字列(ここではB) の後の:の後の文字(ここではe)が返されますが、 なぜ、このようになるのかがよく分かりません。 この処理をしている部分を抽出すると ------------------------------------- function getValue(){  var $tmp='';  for(var $i = 0; $i < arguments.length; $i++){  $tmp += ""['"" + arguments[$i] + ""']"";  }  return eval('e' + $tmp); } var e = eval(" & x & "); ------------------------------------- となっていて、 eval()は、文字列として指定されたコードをJavaScriptのコードとして評価する ということですが、 eval(" & x & ")とeval('e' + $tmp)の部分が何をしているのかがよく分かりません。 なぜ、このコードを実行すると、 $tmpの文字(この場合はB)の後の:の後にある値が取得できるのでしょうか。

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

    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 となった場合でも、 プロシージャーの外にあれば、グローバル変数と言うのでしょうか?

  • VBAでShift-JISのURLエンコード

    Excelにおいて、マクロを使ってShint-JIS形式のエンコードを行いたいのですが その方法(ソース)がネット上で見つかりません。。どなたかご教授いただけないでしょか!  ※VBA(マクロ)について、ぜんぜん詳しくありません。。 検索 ⇒ %8c%9f%8d%f5 UTF-8の場合ならば、シンプルなものが見つかりました。 ----------------------------------------------------- Public Function UrlEncode(ByVal sText As String) As String If Len(sText) = 0 Then Exit Function With CreateObject("ScriptControl") .Language = "JScript" UrlEncode = .CodeObject.encodeURIComponent(sText) End With End Function また、デコードするものも見つかりました。 ----------------------------------------------------- Function URLDecodeSJIS(src) src = UnEscape(src) For i = 1 To Len(src) srcCh1 = AscW(Mid(src, i, 1)) If (&H0 <= srcCh1 And srcCh1 <= &H80) Or (&HA0 <= srcCh1 And srcCh1 <= &HDF) Then URLDecodeSJIS = URLDecodeSJIS & Chr(srcCh1) ElseIf (&H81 <= srcCh1 And srcCh1 <= &H9F) Or (&HE0 <= srcCh1 And srcCh1 <= &HFF) Then i = i + 1 srcCh2 = AscW(Mid(src, i, 1)) clcCh = srcCh1 * 256 + srcCh2 If (Asc(Chr(clcCh)) And &HFFFF&) = clcCh Then clcCh = Chr(clcCh) URLDecodeSJIS = URLDecodeSJIS & clcCh End If Next End Function Function UnEscape(s) With CreateObject("MSScriptControl.ScriptControl") .Language = "VBScript" .Reset UnEscape = .Eval("unescape(""" & s & """)") End With End Function よろしくお願い致します。

  • 変数の定義について

    変数の定義について 変数の定義について 他のブックから検索値をVLOOKで転記させるマクロをこちらの掲示板ログなどを 拝見しながら、ツギハギして作成しました。 転記先のシートのA列に区別コードを設けています。 これを基に転記元のブックから社名などを転記させようと思っているのですが、 変数の型宣言が上手くないらしく?転記処理が出来ません。 「Option Explicit」と「変数宣言」をコメントアウトすると動作します。 変数の宣言が違うのだろうか?と宣言部分をコメントアウトして動作確認して いったら、「Dim 検索値 As Double」があると動作しないようなのです。 これをValiantに変更しても動作しませんでした。 この原因が分かる方、どうぞ助けてください。 //////////////////////////////////////////////////////// Dim Base As Workbook, Code As Workbook Dim 範囲 As Range Dim i As Long Dim 会社名 As String Dim 検索値 As Double ←←←←←←←←←←←←←←←←←ここの部分? Sub 一覧() Set Base = Workbooks("転記元.xls") Set Code = Workbooks("転記先.xls") Set 範囲 = Base.Worksheets("転記元").Range("A4:AX5000") On Error GoTo ErrorHandler Do 検索値 = Code.Worksheets("転記先のシート").Cells(i + 2, 1) If 検索値 = "" Then Exit Do 会社名 = Application.WorksheetFunction.VLookup(検索値, 範囲, 6, False) Code.Worksheets("転記先のシート").Cells(i + 2, 2) = 会社名 i = i + 1 Loop Error トラップ開始 ErrorHandler: 会社名 = "" Resume Next End Sub ////////////////////////////////////////////////////////

  • VBAからjavascriptに値を渡す

    VBAでIEを操作しております。 一部javascriptを使って以下のようなコードで、リンクをクリックしています。 ie.document.Script.setTimeout "javascript:document.getElementById(""ID"").click()}", 10 getElementById(""ID"")のID部分を変数にしたいのですが、 Dim ID as String ID=○○ ie.document.Script.setTimeout "javascript:document.getElementById(○○).click()}", 10 としてもうまく動きません。 javascriptの中身をfunctionにして、引数に○○を持っていっても動きませんでした。 どうすれば引数を渡すことができますか。 jscriptを使えばできそうな気がしたのですが、 js.CodeObject.関数名(引数)で渡せる引数が1つだけ?のようで こちらも頓挫しております。どうかご教示お願いします。

  • 変数宣言

    ↓例で、REC変数を同じプロジェクト内の他basファイルで、使用するとコンパイルエラーになります。 原因が解りません。 対策を教えていただけませんか? Public REC As String Private Function test() As String  ・  ・  ・  ・ REC = test() End Function

  • 関数の引数に複数のユーザ定義型変数を使いたい

    一つの関数の一つのパラメータが異なるユーザ定義型を受けられるようにしたいのですが、どのようにすればいいのでしょうか? Public Type TypeA strCodeA As String intNumA As Integer End Type Public Type TypeB strCodeB As String intNumB As Integer End Type Public Function funcTest(arg1 As Variant) As Integer (略) End Function と記述して関数を Dim datA As TypeA iResult = funcTest(datA) と呼び出そうとすると、次のようなエラーメッセージが表示されて進みません。 コンパイルエラー: パブリックオブジェクトモジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます。

  • ExcelVBA オブジェクト変数の取扱について…

    お恥ずかしい限りです、 やはり色々解っていないですね。 今回はオブジェクト変数についてお教えください 例としてはこんな感じでしょうか? Option Explicit Sub Test() Dim カウンタ As Long, オブジェ As Object, データ(0 To 1) As String, メンバ As Long     データ(0) = "A"     データ(1) = "B"     メンバ = 間乱数(0, 1)     オブジェ.Value = データ(メンバ) '       此所と     Set Sheets(1).Ranje("A1") = オブジェ '  此所の書き方 End Sub Function 間乱数(ByVal Val1 As Long, ByVal Val2 As Long) As Long     間乱数 = Evaluate("RANDBETWEEN(" & Val1 & "," & Val2 & ")") End Function 間違っていると思うのですが、 どう書き直せば良いか、Netを調べても解りません。 ご教示を、どうぞ宜しくお願い致します。 P・s・ SpecialThanks mt2008 様 Evaluate、助かりました。

  • 変数の命名

    すみません...教えていただきたいのですが、 どんな言語でも良いのですが、(私は現在、vb2005とobjective-cを使用しています。) アクセッサ内などで同じものについての変数の命名にいつも悩んでしまいます。 皆さんは、外に見えない変数名には記号的な文字列を使っていますか? どんな感じで命名していますか? よろしくお願いします。 苦労してこんな感じでつけています。 Protected identifier As String Public Property nodeID() As String Get Return identifier End Get Set(ByVal id As String) identifier = id End Set End Property

専門家に質問してみよう