• ベストアンサー

Excel VB→SubまたはFunctionが定義されていません

お世話になります コンパイラーエラー SubまたはFunctionが定義されていません がでます ツール→マクロ→VisualBasicEditorでVBに入った画面では 左側に イミディエイト、ウィンドウ プロジェクト   ThisWorkbook←が選択されている が出ています 右のThisWorkbookのコードウィンドウに Public Function tt()   MsgBox ("メッセージ出すよ") End Function と3行入れました 実行 左のイミディエイトウィンドウに tt と入力すると、上記の SubまたはFunctionが定義されていません とでます イミディトに、 tt といれたものがどうして認識されまいんでしょう Window XPの上でExcel2003、が走っています 不足した情報があれば追記します よろしくお願いします

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

  • ベストアンサー
  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

ThisWorkbook.tt などとやると認識しますよ。

maaaa
質問者

お礼

回答ありがとうございました thisworkbook.tt としたら認識しました 助かりました

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

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 通常、Excel VBAでは、ユーザー定義関数など、Public なもの(かならずしもPublic キーワードは必要ありません)は、「標準モジュール」に入れます。 ただし、ユーザー定義関数は、標準的に戻り値を出すものに、プロシージャは、その中で、一つの作業を終えるようにするものですから、 Sub tt()   MsgBox ("メッセージ出すよ") End Sub は、Sub プロシージャで作るのが、Excel VBAの基本です。 ThisWorkbook モジュールを含めた、ローカルモジュールは、それぞれ、はっきりした目的を持って、そこにコードを置くようにします。

maaaa
質問者

お礼

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

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

関連するQ&A

  • 初歩的な事だと思います。 Sub または Function が定義されていません。

    VBAの本を買ってきて、勉強をしているのですが、テキストに書いてある通り入力しても「Sub または Function が定義されていません。」となってしまいます。 Sub IfSample() Dim intData As Integer intData = clntInputbox("数値を入力して下さい", ("データ入力")) Select Case ingData Case 1 To 10 MsgBox "入力された値は1以上、10以下です" Case 10 To 100 MsgBox "入力された値は10より大きくて、100以下です" Case Else MsgBox "入力された値は100より大きいです。" End Select End Sub 実行すると、エラーがでて、Sub IfSample()が黄色く、 clntInputboxが反転された状態になります。 テキスト通りに入力できているか、なんども確認したのですが、特に間違っていないと思います。どこが悪いのでしょうか?

  • JavaScriptで、VBのAddHandler

    JavaScriptで、VBのAddHandlerのようなことを行う方法はないでしょうか? やりたいこととしましては、 一つの関数が呼ばれた際に、別の関数が呼ばれるように定義しておきたいと思っております。 簡単に、VBの例をあげるとすると下記のようなことです。 これをJavaScriptでやる方法を探しています。(jQueryでも構いません) ご存じでしたら、ご回答をお願い致します。 -------------------------------------- private sub Msg1()    MsgBox("1") End sub private sub Msg2()    MsgBox("2") End sub 'メッセージ1が呼ばれる際に、Msg2を呼ぶように定義 AddHandler Msg1, Addressof Msg2 ----------------------------------------

  • VB functionについて

    プログラム初心者です。 以下のソースをVB2010で動作させると型'double'の値を'system.Collections.ArrayList'に変換できません。となります。呼び出し方法がおかしいと思うのですが。よく分かりません。解決方法を教えてくださいお願い致します。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim aArr() As Double aArr(1) = 1.1 aArr(2) = 2.3 MsgBox(AAA(aArr)) End Sub Public Function AAA(ByVal aArr As ArrayList) As Double() Dim retVal As Double() = Nothing ReDim retVal(2) Dim loopCnt As Integer = 0 Dim Arrcnt As Integer = aArr.Count Dim sum As Double = 0.0 For loopCnt = 0 To Arrcnt - 1 sum += aArr(loopCnt) Next sum = sum / loopCnt retVal(0) = sum Return retVal End Function

  • エクセルVBで

    画面の左側にいつもでているウインドウ(プロジェクトとプロパティ)を間違って閉じてしまいました。 再表示できたのですが、前みたいに画面と一体型にするにはどうしたらよいでしょうか? 今は個々のウインドウで開いている状態です。 又、VBで別な質問もしていますので、分かる方がいらっしゃったら是非教えてください。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1209643

  • VBA 関数(Function) カッコの後のデータ型は必要?

    Function あ() あ = "あああ" End Function Sub test3() MsgBox あ End Sub と、 Function あ() As String あ = "あああ" End Function Sub test3() MsgBox あ End Sub は同じ動作をするのですがやはり「As String」をつけたほうがいいのですか? ウォッチウインドウで確認すると 「As String」がないほうは「Variant/ String」型ですが あるほうは「String」型のみです。

  • (VB初心者) VB起動時既に起動されているExcelの情報

    VisualBasic 6.0 初心者です。 既に起動しているExcelの後にVisualBasicを立ち上げた場合、 既に起動しているExcelの情報を得ることが出来るのでしょうか? やりたい事は Excel起動⇒VB起動⇒Excelのセルを選択⇒そのセルに入力されている値 を取得。 VB起動⇒Excel起動の場合はActiveCellの値を取得出来たのですが 既に起動しているExcelの場合 エラー になってしまいます。 お手数ですが、ご教授願います。 Private Sub コマンド1_Click() MsgBox ActiveCell End Sub 'Form_Load時にこれを実行しないと開いたExcelのアクティブセル値を得られない?? Private Sub Form_Load() MsgBox ActiveCell End Sub

  • VBのReturnの使い方

    Excel2007のVBで以下のfunctionを定義すると、Returnのところでコンパイルエラーになります。 -------------------------------------- Public Function IsTen(lNumber As Integer) As Boolean If lNumber = 10 Then Return True Else Return False End If End Function -------------------------------------- ググってみるとReturn True とか Return False とかができるように思えるのですが、何が不味いのでしょうか? VBの知識はあまりなく、低レベルな質問かもしれませんが、よろしくお願いします。

  • サブウィンドウから親ウィンドウのファンクションを起動

    おせわになっております。 サブウィンドウから親ウィンドウのファンクションを起動する方法について困っています。 親ウィンドウから var subWin = window.open("a.html", "sub") でオープンしたサブウィンドウを閉じる場合に サブウィンドウから親ウィンドウの function sub_close() { subWin.close(); } を呼び出して閉じる処理をしています。 (サブウィンドウでwindow.opener.sub_close()) #これは正常に処理されます。 ここで問題なのですが、サブウィンドウがフレームの場合に、フレームセットされたHTMLから window.opener.sub_close() というような方法では親画面の操作ができないのでしょうか?(できませんでした。) 初歩的な質問で申し訳ないのですが、何かよい方法があれば教えてください。 宜しくお願いします。

  • VBでExcelが起動されているか知りたい

    環境 winXP Office2000 Excel VB6.0 sp5 VBからExcelが起動されているか知りたいのです。 【状況1】 [a.xls]を起動している状態で下記を実行すると問題なく起動が確認できます。 【状況2】 [a.xls][b.xls]を起動してて[b.xls]が前面にある場合は下記を実行しても[a.xls]を探せません。 またウインドウを最大化にしていない場合も"Microsoft Excel -"という文言がいらない?せいか探せません。 [FindWindowEx]を使用すればできるのかと思いましたがイマイチ使い方が分からず困っています。 よろしくお願いします。 'sampleソース--------------------------------------------- hwnd = FindWindow("XLMAIN", "Microsoft Excel - a.xls") If hwnd = 0 Then Msgbox(" 0 は、Excel が起動していないことを示します。") Else Msgbox(" 起動中") End If 'sampleソース---------------------------------------------

  • VB6からExcelを操作する

    VB6.0からExcelの操作をしています。 そのなかで、Excelシートを印刷したいのですが、どのようにしたら良いのでしょうか。 また、ExcelVBAのFunctionやSubを実行するにはどのようにするのでしょうか。 VB6.0内でExcel操作は次のようにしています。 Dim ExcelApp As Object Dim EWorkbook As Object Dim ESheet As Object Set ExcelApp = CreateObject("Excel.Application") Set EWorkbook = ExcelApp.Workbooks.Open(ExcelBookFlNm) Set ESheet = EWorkbook.Sheets(M_SheetNm) Set ESheet = Nothing Set EWorkbook = Nothing ExcelApp.Quit Set ExcelApp = Nothing よろしくお願いします。

専門家に質問してみよう