質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

4494閲覧

Excel VBAのsubまたfunctionが定義されませんのエラー

rura

総合スコア70

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/04/17 11:05

前提・実現したいこと

こんちわ。Excel VBA 初心者です。
会員登録画面を作成しています。
下記エラーバグの削除方法がよくわかりません。
どなたかお願いします。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

引数の判定するコードで コンパイルエラー subまたfunctionが定義されませんのエラー

該当のソースコード

Option Explicit Public Sub LS_BookReturn_Click() Dim TextCamnameS As String Dim Textdescrip As String Dim TextCskiDay As String Dim Textemployees As String Dim TextFounding As String ' Dim Textoname As String Dim Textzipcode As String Dim ComBprefectures As String Dim Texminicic As String Dim Textaddress As String ' Dim Textworkplice As String TextCamnameS = clientForm.TextCamnameS.Text Textdescrip = clientForm.Textdescrip.Text TextCskiDay = clientForm.TextCski.Text Textemployees = clientForm.Textemployees.Text TextFounding = clientForm.TextFounding.Text Textoname = clientForm.Textoname.Text Textzipcode = clientForm.Textzipcode.Text 'ComBprefectures = clientForm.ComBprefectures.Text Texminicic = clientForm.Texminicic.Text Textaddress = clientForm.Textaddress.Text Textworkplice = clientForm.Textworkplice.Text If LF_user(TextCamnameS, Textdescrip, TextCskiDay, Textemployees, Textoname, Textzipcode, Texminicic, Textaddress, Textworkplice) = 0 Then '会員No、氏名が未入力でなければ、情報を登録しましたの表示' MsgBox "「返却情報を登録しました」" End If End Sub Public Function LF_BookReturnRegistration(ByVal Textdescrip As String, ByVal TextCamnameS As String, ByVal Textemployees As String, _ ByVal TextCskiDay As String, ByVal Textemployees As String, ByVal TextFounding As String, ByVal Textoname As String, _ ByVal Textzipcode As String, ByVal Texminicic As String, ByVal Textaddress As String, _ ByVal Textworkplice As String) As Integer If TextCamnameS = "" Or Textdescrip = "" Or Textemployees = "" Then MsgBox "「入力がエラーです。」", vbOKOnly + vbExclamation, "エラーメッセージ" LF_user = -1 Exit Function End If 'もし、該当物ならば罫線と中央配置を設定 With Sheet2.Cells(D4) .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous .HorizontalAlignment = xlCenter '(返却日)4列目にTextemployeesを入れる Sheet3.Cells(BNumC, 4).Value = Textemployees End With LF_user = 0 End Function

補足情報(FW/ツールのバージョンなど)

Windows10 、Excel 2010

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rura

2018/04/17 11:24

大変、申し訳ございません。誤って、2回投稿しました。こちらで質問を受け付けします。
Zuishin

2018/04/17 11:52

もう一つの方に回答がついてるのでそちらで受け付けした方がいいと思います。
guest

回答2

0

ベストアンサー

VBE画面のツールバーの「デバッグ(D)」→ 「コンパイル」で確認しました?

関数名が「LF_BookReturnRegistration」なのに、
「LF_user = -1」だの、「LF_user = 0」だの、
宣言してる関数名と、返そうとしてる関数名が違う。。。

まず、IsUser とか他の関数名にした方がいいでしょうね。

で、判定なら、Boolean型にすべきでは?
複数の判定になるなら、Enum を使用すべきでしょうね。

VBAは基本 Byref なので、わざわざ全部 ByVal にするのは苦労するでしょうね。

テキストボックスから値を取得するからって、
変数名の頭に Text ばっかり付けて、
余計に見にくいし、分かりにくいし、意味あるの?
※「Texminicic」は「Textminicic」で[t]が抜けてる。
VBA初心者というか、プログラマ初心者だと思われますよ~

これだけ変数を使用して、かつ、ひとまとまりの情報群なのであれば、
Type を使った方がコーディングしやすいと思うな~

まぁ、「なんで VBA なんか。。。」なんて嫌々やってると思うけど、
まぁ、がんばって~~~

推薦本:ExcelVBAを実務で使い倒す技術
※回しものではないですが、技術者目線で読める良書かと

投稿2018/04/18 00:56

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

LF_user という関数を作ったのに、関数名をLF_BookReturnRegistration に変更してしまい、ついでに引数の順序も変えてしまった。
ということでは...

投稿2018/04/17 12:34

iruyas

総合スコア1067

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問