• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロでEnd Subが見つからないとでる)

エクセルマクロでEnd Subが見つからないとでる

このQ&Aのポイント
  • エクセルマクロでEnd Subが見つからないというエラーが出る場合、記述内容に問題がある可能性があります。
  • マクロの記述に文法エラーがある場合や、End Subが正しく記述されていない場合にこのエラーが出ることがあります。
  • 記述内容を再度確認し、正確にEnd Subを記述しているか、文法エラーがないかを確認してください。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

こちらも必要のようですよ http://www.geocities.jp/tomtomf/denki/AC1/ac1.htm 先ずエクセルで複素数を扱えるようにする vbaで、利用する場合は、以下のコードを、標準モジュールに作っておく必要があります。コピーペーストで、貼り付けてください。 Public Function COMPLEXa(a As Double, b As Double) As Variant ・・・・・

alps4
質問者

お礼

あの質問の内容で,この記事をよく見つけられましたね! これで仕事が進みそうです.ありがとうございました!!

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

その他の回答 (3)

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

プロシージャには ・SUB プロシジュアー  と ・Function プロシジュアー とあります。 それぞれは Sub() End Sub や Function() End Function (左括弧と右括弧のように)囲われる形になります。 質問のコードは Sub() Function() End Sub となっており、 (誤り原因A)End Function がありません。 質問のようなことをするなら Function IMMULT() End Function で定義し、IMMULTを使う(実行する、呼び出す)なら (誤り原因B) SUB XXX() IMMULT(引き数)  ’Callを省略した方式の場合 End Sub のような書き方をします。IMMULT()のすぐ前には、Function()はつけません。VBAやVBはそういう約束です。Callで呼び出すのが標準方法。 参考 https://www.sejuku.net/blog/28904 VBA入門】Functionの使い方(呼び出し、引数、戻り値) Googleで「vba 関数の実行」で照会して記事を読むこと。 ーー 質問者は、独習の弊害が現れているように推測される。VBAとかプログラムの、学習で、何事によらず、注意が必要と思う。

alps4
質問者

お礼

ご指摘のとおり,関数を定義したいだけに単にコピペしてしまいました. 詳細な解説を頂きました.今の私にはまだ解らない言葉がありますが,これで理解が進みそうです.ありがとうございました!!

すると、全ての回答が全文表示されます。
  • mimazoku_2
  • ベストアンサー率20% (1908/9138)
回答No.2

私はマクロにうとい人間です。 Sub 関数定義() End Sub としたら、エラーは出なくなりました。 そこから類推すれば、メインプロシージャーとサブプロシージャーの区別が無いのが問題なのではないでしょうか? ま、マクロ自体が謎が多いけど・・。 私じゃこれが限界です。

alps4
質問者

お礼

まだマクロの言葉も解らない私です.勉強します.ありがとうございました!

すると、全ての回答が全文表示されます。
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>以下のマクロはエクセルにない関数「IMMULT」をあらかじめ定義するためのものです. 正しく貼り付けましょう http://www.geocities.jp/tomtomf/denki/AC2/ac2.htm Public Function IMMULT(a As Range, b As Range) As Variant  Dim r1 As Integer, r2 As Integer, c1 As Integer, c2 As Integer, nn As Integer  Dim r As Integer, c As Integer  Dim cr As Integer, cc As Integer  Dim n As Integer  Dim mm() As Variant  r1 = a.Rows.Count  r2 = b.Rows.Count  c1 = a.Columns.Count  c2 = b.Columns.Count  If (c1 = r2) Then   nn = c1  Else   Exit Function End If cr = r1 cc = c2 ReDim mm(1 To cr, 1 To cc)  For r = 1 To cr   For c = 1 To cc    mm(r, c) = 0    For n = 1 To nn     mm(r, c) = IMSUMa(mm(r, c), IMPRODUCTa(a.Cells(r, n), b.Cells(n, c)))    Next   Next  Next  IMMULT = mm End Function

alps4
質問者

お礼

意味も解らずSub**()とEnd Subの間に張り付けていました Subが必要ないマクロもあったんですね! 早々に教えて頂きありがとうございました!!

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

関連するQ&A