• ベストアンサー

エラー VBA

BVAを練習中です。 SubまたはFunctionが定義されていません という表示が出ますが、調べても何が原因か 分かりませんでした。 最初の行に「Sub 〇〇()」という一文もつけましたし 次に何か足りない、ということでしょうか。 Sumを使ったものを作りたいのですが、そのエラーが 出たときにSumの部分が青く反転しています。

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

  • ベストアンサー
  • kon555
  • ベストアンサー率52% (1762/3380)
回答No.2

『Sumを使ったものを作りたいのですが』という事ですが、vbaにはsumコマンドは存在しません。sumはシート関数です。  具体的なコードが書かれていないので想像ですが、多分シート関数のような書き方でsumなにがしと記述していませんか? 「SubまたはFunctionが定義されていません」とは存在しないプロシージャを呼び出そうとした時のエラーです。  sumはvbaには存在しないので、システム的にそれをプロシージャとして処理し、かつ存在しないためエラーになったわけです。  vbaでワークシート関数を使うにはworksheetfunctionを使用します。 https://excel-ubara.com/excelvba1r/EXCELVBA510.html  ただvbaの勉強中というなら、まずはワークシート関数を使わずに、変数と演算で数値を合計してみてもよいと思います。

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

その他の回答 (2)

  • chie65535
  • ベストアンサー率43% (8539/19413)
回答No.3

EXCELVBAでSUMワークシート関数を使う場合は Dim TotalVal as Integer TotalVal = Application.WorksheetFunction.Sum("D1:D32") のようにします。 Dim TotalVal as Integer TotalVal = Sum("D1:D32") だけだと「そんな関数はありません」というエラー、つまり「SubまたはFunctionが定義されていません」エラーになります。 因みに、エラーの原因は「青い反転した部分」にあるので、青い反転部分を適切に直さないと、エラーは消えません。

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

「Sumの部分が青く反転しています」というのなら,そこがおかしい。 そして「SubまたはFunctionが定義されていません」というのだから,そのSumというのは何者?と疑問に思ってください。どこにも悌吾されてないのでしょう。

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

関連するQ&A

  • 【エクセル】 VBAでエラーが出てわかりません。。

    やりたいことは、関数をマクロでセルに記入してオートフィルで指定した行数まで伸ばしたいのです。 (すでに関数で作成したファイルがあるのですが、行数が多いため、とても重い。。^^;) まずマクロの記録で次のマクロを取得しました。 Sub Macro4() Range("C4").Select ActiveCell.Formula = "=SUM(A2:A10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C12"), Type:=xlFillDefault Range("C4:C12").Select Range("D11").Select End Sub そして、 Sheet2に貼り付けて > ActiveCell.Formula = "=SUM(A2:A10)" の"=SUM(A2:A10)"部分をちょっと長い関数ですが、 "=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))" と書き換えてマクロを実行すると「アプリケーション定義またはオブジェクト定義エラーです。」 というエラーが出てしまうんですが、どこを直せばわからないです。。 おかしいところを教えてください、よろしくお願いします。 わかり図らい説明かと思いますが。。この件(1行目の文)について似たようなことを解説して いるサイトがありましたら、教えて欲しいです。

  • VBAのこの実行時エラーは何故起きる?

    ExcelVBAで次の大変簡単なコードを書いてみました。 シート上の行列(100*100)の範囲にランダムに☆印を100個表示するというものです。sheet1にコマンドボタンを貼り付け押すと実行します。ところが実行時エラーが起きて止まります。(メッセージ:”アプリケーション定義またはオブジェクト定義のエラーです”)原因はなんでしょうか?6行目が問題なようです。うまく動く時もあるので不思議です。 Private Sub CommandButton1_Click() Application.ScreenUpdating = False For n = 1 To 100 R = Int(Rnd * 100) C = Int(Rnd * 100) Sheet1.Cells(R, C).Value = "☆" Next Application.ScreenUpdating = True End Sub

  • エクセルのマクロでエラー

    いつもお世話になっています、マクロ初心者です、Vlookupを使うとエラーになってしまいます。  Sheets("401回~").Select Application.Goto Reference:="回" AA = VLookup(I1, 回, 3) を実行すると コンパイルエラー Sub又はFunctionが定義されていません と表示され、Vlookupの部分が青くなります。 Windows Xp、Office2000です、sheet内で、同じ文を使っているのですが、マクロ用に何か定義が必要なのでしょうか? 初心者で、手元には図書館で借りた入門書しかありません。 アドバイスお願いします。

  • Access97のエラーについて

    Access97のシステムがあります。 元は、Access1.0の時に作成されたもので、バージョンアップを重ねて現在97で動いています。 このシステムに機能を追加していたのですが、 ボタンのクリック時のイベントでマクロの実行を行ったところ、 「VisualBasicを再コンパイルしてください」みたいなコンパイルエラーが出たので、 このマクロを全てVBAに書き換えました。が、次に実行したら、オートメーションエラーが 出て、VBAに書き換えた部分のFUNCTIONの行が反転して実行が止まってしまいました。 そこで、バックアップしてあったmdbに同じ追加を行い、実行してみたところ、 何回かはちゃんと動作してくれたのですが、突然、同じエラーが出てきました。 いろいろと調べてみたのですが、イマイチよく分かりませんでした。 そもそも、オートメーションエラーとはなんなのでしょうか? また、原因として考えられることは何があるのでしょうか? ご教授願います。

  • VBAについて

    VBA初心者です、実験でユーザーフォームにボタンを設けて押されたら次から次にセルに文字を表示していくようなプログラムを組む場合 以下のプログラムですと 2回目のボタンクリックで 実行時エラー’1004’: アプリケーション定義またはオブジェクト定義のエラーです。 と出ます。 どなたか添削をお願いでしょうか。 Private Sub CommandButton1_Click() X = Cells(1, 1) If X = "" Then n = 1 Cells(n, 1) = "最初のボタンが押されました" Else Cells(n, 1) = "次のボタンが押されました" End If n = n + 1 End Sub

  • エクセルVBAのエラーについて

    こんにちは、よろしくお願いします。 以下はマクロの一部を抜粋したものです。 最初の分で、jに変数をセットし、次の文で、セットステートメントでtにセットしたいのですが、実行時エラー(アプリショーン定義またはオブジェクト定義のエラーです)と表示されてしまいます。 変数jには、確実に数値が入っております。理由を分かる方いましたらお願いします。 j = Sheets("データ").Range("b7").End(xlDown).Row Set t = Worksheets("基礎データ").Range(Cells(7, 2), Cells(j, 2)) ※エクセル2000を使用しています。

  • 変数に特定の文字が含まれているなら(VBA)

    以前に質問した http://oshiete1.goo.ne.jp/qa4407128.html とは違うのですが 変数"あいうえお"に "あ"が含まれているなら "含まれています"と表示したいです。 Sub test() Dim strmoji As String strmoji = "あいうえお" If Find(strmoji) Like "*あ*" Then MsgBox "含まれています" End If End Sub 部分的に考えてみたのですが 「Sub、Function、または Property が定義されていません。(Error 35)」 が出てしまいます。 ご教授よろしくお願い致します。

  • アクセス2000VBAのエラー

    以前も質問させていただきました。 If文でエラー回避でしようとして Cancel = True という構文を使っているのですが、近頃この文が 「変数の定義がされていません」というエラーになります。 なんでエラーがでるのかわかりません。 書くと必ずといって良いほどエラーになります。 原因はなんなのでしょうか? このごろは、エラーでつかえないのでundoを使用しています。undoとcancelの違いもできればご教授ください。

  • VBA エクセル2003だと出るエラー

    VBAはじめたばかりですが、宜しくお願いいたします。 エクセル2000ではエラーがでませんが、2003の場合次のようなエラーがでます。 実行時エラー1004 アプリケーション定義またはオブジェクト定義エラーです 「デバック」を押して、コードをみますと、次の行に黄色いマーカーがつきます。 Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:=ThisWorkbook.Path & "\今月.txt" マウスオーバーすると、次の2つが表示されます。 xlCurrentPlatformText= -4158 ThisWorkbook.Path ="C:\Document&【現在このファイルがあるパス】" 解決方法はありますでしょうか。 ご存知の方、いらっしゃいましたら、なにとぞ宜しくお願いいたします。 このマクロの実行目的は、あるエクセルファイルを加工して、最終的にテキストファイルを生成することです。 テキストファイルをつくったあと、保存するタイミングでエラーがおきるようです。

  • Excel VBAについて

    Excel VBAにおいて、Sheetの選択した行によって値を表示するUserFormを変更したいと思っています。 現在以下のようにしたのですが、実行すると「SubまたはFunctionが定義されていません」というエラーが表示されます。 「Controls("UserForm" & x).Label1.Caption =」のところをどのようにしたらよいのでしょうか。 Private Sub CommandButton1_Click()   If ActiveCell.Row = 5 Then     UserForm1.Show     x = 1   ElseIf ActiveCell.Row = 6 Then     UserForm2.Show     x = 2   End If End Sub Private Sub Worksheet_Selection Change(Byval Target As Range)   Controls("UserForm" & x).Label1.Caption = ・・・

専門家に質問してみよう