• ベストアンサー

VBで、型が一致しません、というエラーがでます

下記のcodingが、コンパイルエラー 「型が一致しません:配列またはユーザー定数型を  指定してください。」 とエラーがでます myFileDump3()という関数を作り test、から、それを呼び出しています myFileDump3(ary1)のary1がエラーとして指摘されます WindowXPでACCESSのVBです Function test() Dim ary1(3, 3) As Long ary1(1, 1) = 11: ary1(1, 2) = 12: ary1(1, 3) = 13 ary1(2, 1) = 21: ary1(2, 2) = 22: ary1(2, 3) = 23 ary1(3, 1) = 31: ary1(3, 2) = 32: ary1(3, 3) = 33 myFileDump3 (ary1) End Function '--------------------------------------------- Function myFileDump3(ary1() As Long)    ・    ・    ・    ・

  • ppmi
  • お礼率88% (331/372)

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

  • ベストアンサー
回答No.1

>myFileDump3 (ary1) を myFileDump3 ary1 か Call myFileDump3(ary1) に変更

ppmi
質問者

お礼

ご指摘のように変えたら出来ました ありがとうございました

その他の回答 (1)

  • ackapapa
  • ベストアンサー率44% (8/18)
回答No.2

Function myFileDump3(ary1() As Long) を Function myFileDump3(ary1(3,3) As Long) にしてみては?

ppmi
質問者

お礼

ありがとうございまいした

関連するQ&A

  • 配列の参照渡しで型が一致しません。

    エクセル2003です。 いつもお世話になります。 以下のコードを実行すると「配列の型が一致しません。」というエラーが出ます。 typeNameで確認しても配列の型はvariant()で正しいと思うのですが。。。 皆様のお知恵を拝借させていただけないでしょうか。 -------------------------------------- Sub main() Dim e As Variant e = fuN() Call pRo(e)  '←ここでエラーになる。 End Sub Function fuN() As Variant Dim a(0) As Variant a(0) = "zero" fuN = a End Function Sub pRo(ByRef c() As Variant) '処理っす End Sub --------------------------------------

  • VBA「型が一致しません」とエラーが出ます

    下記記事の関連質問です。 Excel 文字列抜き出しについて https://okwave.jp/qa/q9979633.html 記事を参考に複数行にマッチするように下記のようにコードを考えましたが msplit(mRng, " ", iii)で「型が一致しません」とエラーが出ます。 なぜでしょうか? テスト用のA4セル 1 01 45124422 ミント 09/01~03/01 108 98 01/05~02/01 Option Explicit Sub test() Dim msplit As Variant Dim buf As String, i As Long, ii As Long, iii As Long, cnt As Long Dim mRng As Range For ii = 4 To Cells(Rows.Count, 1).End(xlUp).Row buf = Cells(ii, "A") For i = 1 To Len(Cells(ii, "A")) If Mid(buf, i, 1) = " " Then cnt = cnt + 1 Next For iii = 1 To cnt Set mRng = Cells(ii, "A") ’Stop Cells(iii + 1, ii) = msplit(mRng, " ", iii) Next Next Set mRng = Nothing End Sub Function msplit(ByRef mRng As Range, ByVal Spstr As String, ByVal num As Long) As Variant msplit = Split(mRng, Spstr)(num - 1) End Function

  • VB6.0の参照渡し

    VC++6.0で作成したDLLへVBの配列を渡そうと思っています。 いくつかためしたのですが、 「配列引数は ByRef でなければなりません。」 というエラーがでてしまいます。 標準モジュール内の記述 Declare Function fncTest Lib "Test.dll" (ByRef test() As Long) As Long フォーム内 Private Sub Test_Click() dim test() as Long dim i as integer for i = 0 to 3 test(i) = i next i fncTest(Test()) End Sub とりあえず、こんな形でかいてみましたが、 Sub内のtest()の宣言方法、使用法等ご指導お願いします。

  • [Excel2000_VBA] 型が一致しませんメッセージが表示

    各サイトを調べたのですが、自分のレベルに合った解答内容がなくよく理解できなかったので、質問させて頂きます(初歩的な質問で申し訳ありません) ユーザー定義を使用し、以下のコードを作ってみました。 配列を引数にして、まとめて返したいと考えていますが、構造体を使用すると「型が一致しません」と表示されてしまいます。 何が原因しているのでしょうか? さっぱり分かりませんので、ご教示お願いいたします。 Type test aaaa As Integer End Type Sub sbTest() Dim myAns() As test myAns = Sample1(myAns) End Sub Function Sample1(ByRef Ans() As test) Dim i As Integer Dim ret(0 To 9) As test For i = 0 To 9 ret(i).aaaa = i Next Ans = ret '配列名で配列を戻り値 End Function

  • コンパイルエラー:型が一致しません。

    VBA(EXCEL2007)-Win7Proで下記コードを実行すると、  コンパイルエラー:型が一致しません。 が、発生します。 Option Explicit '呼ばれる側 Public Sub sub1(ie As InternetExplorer) End Sub '呼び出し側 Public Sub Test() Dim ie As InternetExplorer sub1 (ie) End Sub VAB初心者です。 netで紹介されていたソースをコピペしてみたのですが、コンパイルエラーとなってしまいました。問題点絞り込みのために、削ぎ落とした結果が、先のソースです。 下記が参考のソースの場所になります。 http://www.macrogirls.net/iesamplecode/vbaie_day4_4.html 画面遷移待受サブルーチン が問題のソースです。

  • VBのString型の配列をVCで受け取るには?

    VBでString型の配列として定義されている変数を VCのプログラムで受け取るにはどうすればよいのでしょうか? 試しにVBでString型の配列を作って DLLのC_TESTというファンクションを呼び出すという 処理を作ってみたのですが、コンパイルエラーになってしまいます。 なにかおかしいところありますか? そもそもVCにはString型ってないんですよね? プログラミング初心者ですので、変な言葉遣いに なってるかもしれませんが宜しくお願いします。 VB Declare Function C_TEST Lib "\test.dll" (ByVal data() As String) As Integer Dim A(1) As String dim rtn as Integer A(0)="あああ" A(1)="いいい" rtn= C_TEST(A) VCのプログラム int _stdcall C_TEST(LPSTR A[2] ){ AfxMessageBox( A[0] ); return(0); }

  • VB6で配列を引数にするときの2通りの方法について

    VB6で引数に配列を渡す方法が2通りあるよう?ですが以下のような配列があり、渡し方によって引数の定義の仕方が異なると思うのですが、(2)番目の関数の書き方が知りたいです。 dim ary_dat(10) as integer (1)test_A( ary_dat ) は、sub test_A( byref ary() as integer)という関数を作れば動作することはわかりましたが、 (2)test_B( ary_dat(0) ) は、関すでどのような引数を定義すればできるのでしょうか?

  • VB6のメモリ解放に関して

    お世話になります VB6のメモリ解放に関して、以下を参考に下記のコードで試したのですが、 コンパイルエラーで「配列には割り当てられません」となってしまいます。 http://okwave.jp/qa/q3372573.html 違いは宣言の型がStringかLongしかないと思うのですが、 なにが悪いのか教えていただけないでしょうか ******* 以下 ソース Dim wProcDat() As Long ReDim wProcDat(1 To 1000, 1 To 768) 中略 Set wProcDat = Nothing

  • 型が一致しません

    クラスのメソッド(VBで作成したActiveXDLL)を実行する時、 型が一致しませんというエラーがでます。 クラスのパラメータをリテラルで埋め込むと正常に実行され、 変数を用いるとエラーとなります。 何かお気づきの方、教えてくれたら幸いです << asp側 >> Set SxeObj = Server.CreateObject("sxejancheck.Jancheck") 下の書き方だとOK ReturnResult = SxeObj.CheckJan ("000001", "1111111111111") 下の書き方だと駄目 pSellerCD = "000001" pGtinCode = "1111111111111" ReturnResult = SxeObj.CheckJan (pSellerCD , pGtinCode) VB(DLL側) Public Function CheckJan(pSellerCD As String, pGtinCode As String) As Boolean 環境はIE5.5+IIS5.0+WIN2000です。

  • ExcelVBAで『ByRef 引数の型が一致しません』が発生する場合と発生しない場合がある

    こんばんは。 何故このような現象が発生するか判らず、 質問致します。 環境は ・WindowsXP Professional ・Excel2003 ・ExcelVBA ・参照設定:Microsoft DAO 3.6 Object Library です。 下記は抜粋した内容ですが、 レコードセットを配列で宣言し、 関数に配列として受け渡しています。 プログラムを作成途中、テストとして実行した所、 「Call test(dbWS, dbWB, dbRes)」 のdbResの所が黄色になり 「ByRef 引数の型が一致しません」 と表示されました。 初めて発生するまでは問題なく動いており、 そこに関するソースの変更をしたわけではないのに発生しました。 また、ソースを変更せず、Excelのシートの追加や削除を行った後、コンパイルを行うと発生したりもします。 その他、そのコンパイルエラーが発生した後に、ファイルを保存し、再度開くと、 再び同じエラーが出る場合と、出ない場合があり、再現性が難しい状態にあります。 色々試したところ、レコードセットを配列で関数に渡さなければ問題がなさそうで、 現在はdbWS、dbWB、dbRes(2)をグローバル変数で宣言し、 関数の引数としては受け渡さず、直接グローバル変数で値を受け渡す回避方法を取っております。 何かこの現象についてご存知の方がいれば教えて頂きたいと思います。 不足している情報がありましたら指摘下さい。 --------------------------------- Sub main()   Dim dbWS As Workspace   Dim dbWB As Database   Dim dbRes(2) As Recordset   '処理   Call test(dbWS, dbWB, dbRes) End Sub --------------------------------- Private Function test(ByRef dbWS As Workspace, ByRef dbWB As Database, ByRef dbRes() As Recordset)   '処理 End Function ---------------------------------

専門家に質問してみよう