[コンパイルエラー 修飾子が不正です]ユーザフォームでのユーザ名入力に関するエラー

このQ&Aのポイント
  • VBAのユーザフォームで「ユーザ名」の入力を行い、テキストボックスの入力有無やユーザ名の重複を確認する処理を実行していますが、コンパイルエラーが発生しています。
  • 登録ボタンを押した時にエラーが発生しています。ユーザ名の入力が必須であり、重複チェックも行っています。
  • VBA初心者のため、具体的な解決策が分からず困っています。アドバイスをお願いします。
回答を見る
  • ベストアンサー

[コンパイルエラー 修飾子が不正です]

ユーザフォームに「ユーザ名」を入力します。  (1)テキストボックスの入力有無の確認  (2)ユーザ名の重複の確認 上記を実行させようとしているのですが、「コンパイルエラー 修飾子が不正です」が表示 されてしまいます。 にわか覚えのVBAでどうしたらよいか・・わかりません。 ご教授願います。。m(__)m。。 **********以下 '[登録ボタン]を押した時の処理 Private Sub user_touroku_button_Click()   ←★ここでエラー発生!! '------------------------------------------------- Dim check As Long '重複有無 Dim rowsCount As Long '表の現在行数 '必須項目のチェック(ユーザ名) If user_txt.Text = "" Then MsgBox "ユーザ(案件)名を入力してください。", vbExclamation, "入力エラー" user_txt.Text.SetFocus Exit Sub End If 'ユーザ名の重複チェック On Error Resume Next check = 0 check = WorksheetFunction.Match(user_txt.Text, Range("ユーザ一覧").Columns(5), 0) On Error GoTo 0 If check > 0 Then MsgBox "このユーザ(案件)名はすでに登録されています", vbExclamation, "重複エラー" user_txt.Text.SetFocus Exit Sub End If '----------------------------------------------------- よろしくお願いします。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

パッと見ただけで確認はしていませんが、 user_txt.Text.SetFocus はNGです。(2ヶ所ありますね) user_txt はテキストボックス user_txt.Text はテキストボックスに入力された文字列 SetFocusを指定できるのはテキストボックスなので、 user_txt.SetFocus としなければなりません。

yoshi179
質問者

お礼

あっ!!そのようですね。。 単純なミスでした、、すみません。。 これで動きました。ホントお騒がせいたしました。 ありがとうございます!!

関連するQ&A

  • 日付の重複した場合にエラー表示をさせたい。

    以下の記述の場合、日付の重複をしてもエラーが出ません。 文字の重複はちゃんと、エラーがでました。 どのように書き換えたら、日付の重複に対してエラーが出るのか教えていただきたいです。 On Error Resume Next check = 0 check = WorksheetFunction.Match(TextBox8.Text, Range("業務報告書データ2").Columns(1), 0) On Error GoTo 0 If check > 0 Then MsgBox "この日付は、すでに入力されています。", vbExclamation, "入力エラー" TextBox8.SetFocus Exit Sub End If

  • エクセル

    下記のようなマクロを作成しましたが、実行するとエラーメッセージ(コンパイルエラー SubまたはFunctionが定義されていません)が表示され止ってしまいます。 解決方法を御指導お願い致します。 Private Sub CommandButton2_Click() '得意先登録ダイアログで登録ボタンをクリック時実行 Dim check As Long '重複の有無(=0:重複せず,>0:重複) Dim insertRow As Long '挿入行位置 '入力必須項目のチェック If koudo.Text = "" Then MsgBox MsgBox "得意先コードを入力してください", vbExclamation, "入力エラー" koudo.SetFocus Exit Sub End If If syamei.Text = "" Then MsgBox "得意先名を入力してください", vbExclamation, "入力エラー" syamei.SetFocus Exit Sub End If '重複チェック On Error Resume Next check = 0 check = WorksheetFunction.Match(clnt(koudo.Text), Range("得意先一覧").Columns(2), 0) On Error GoTo 0 If check > 0 Then MsgBox "この得意先コードは、すでに入力されています", vbExclamation, "入力エラー" koudo.SetFocus Exit Sub End If Sheets("得意先マスター").Unprotect With Range("得意先一覧") '最下行に一行挿入する insertRow = .Rows.Count .Rows(insertRow).Insert Shift:=xlDown 'データをセルに入力する .Cells(insertRow, 1) = tourokubi.Text .Cells(insertRow, 2) = koudo.Text .Cells(insertRow, 3) = syamei.Text .Cells(insertRow, 4) = huri.Text End With Sheets("得意先マスター").Protect Unload 得意先登録ダイアログ End Sub

  • 下記質問Vol.2です

    strSQL = "insert into 商品マスタ values(" & txtループ(0).Text & ",'" & _ txtループ(1).Text & "'," & txtループ(2).Text & ")" strSQL2 = "update 商品マスタ set 商品名=" & "'" & txtループ(1).Text & "'," & "単価=" & _ txtループ(2).Text & " where " & "商品ID=" & txtループ(0).Text If txtループ(0).Text = "" Then MsgBox "商品IDに何かを入力してください" txtループ(0).SetFocus Exit Sub End If If txtループ(1).Text = "" Then MsgBox "商品名に何かを入力してください" txtループ(1).SetFocus Exit Sub End If If txtループ(2).Text = "" Then MsgBox "単価に何かを入力してください" txtループ(2).SetFocus Exit Sub End If vol.3へ 関連URL:http://www.okweb.ne.jp/kotaeru.php3?q=160999

  • ユーザーフォーム データ消去の時の処理

    環境:Excel2002です ユーザーフォームのテキストボックスの入力チェックをしています Rem**************** Rem TextBox5 Check Rem**************** Private Sub TextBox5_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Len(Me.TextBox5.Text) = 0 Then '未入力Check If IsNumeric(Me.TextBox5.Text) = False Then '数値入力Check MsgBox "数値で入力してください", _ vbExclamation, "納品書作成ツール" Me.TextBox5.SetFocus Exit Sub End If MsgBox "入力してください", _ vbExclamation, "納品書作成ツール" Me.TextBox5.SetFocus Exit Sub End If Me.TextBox5.Text = Format(Me.TextBox5.Text, "#,##0") End Sub 入力したデータを消去して Enterキーを押すか、マウスでクリックした時のいずれでも Len(Me.TextBox5.Text) = 0 と認知されて "数値で入力してください"のメッセージが表示されてしまいます このメッセージが出ないようにするにはどうしたらいいのでしょうか ご教示願います

  • 入力時エラーメッセージの出し方

    http://oshiete1.goo.ne.jp/qa3745129.htmlを参考に 下記の構文を作りましたが、エラーメッセージが出せなく困っています。 フォームで入力を行う際に、該当ボックスで車番一覧にデータの無いものに関してエラーメッセージを出したいと考えています。 修正箇所に関してご指摘いただければと思います。 よろしくお願いします。 Private Sub CommandButton1_Click() Dim check As Long '重複の有無(=0:重複せず,>0:重複) With Cells(Rows.Count, 1).End(xlUp).Offset(1) .Value = TextBox1.Text .Offset(0, 1).Value = TextBox2.Text .Offset(0, 2).Value = TextBox3.Text .Offset(0, 4).Value = TextBox4.Text On Error Resume Next check = 0 check = WorksheetFunction.Match(CInt(TextBox2.Text), Range("車番一覧", Columns(1))) On Error GoTo 0 If check = 0 Then MsgBox "その車番は登録されていません!", vbExclamation, "入力エラー" TextBox2.SetFocus Exit Sub End If Exit Sub End With TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" If TextBox1.Text = "" Then TextBox1.SetFocus End If Range("A1").Sort Key1:=Range("A1"), order1:=xlAscending, Key2:=Range("A1"), order2:=xlAscending, Header:=xlGuess End Sub

  • Access 日付範囲の条件指定

    いつも質問ばかりですいません。 指定の日付範囲外の値に対してメッセージを出して再入力させたいのですが上手くいきません。 《条件》 今日より先は NG 今日より2日以上前は NG 1日前:OK 今日:OK Dim txt01 As Date ' Dim txt02 As String ' Dim txt03 As Integer Dim ckDate As Date ckDate = Date - 2 '日付のチェック If IsNull(Me.txt01) Then 'Nullチェック MsgBox "txt01=Null" Me.txt01.SetFocus Exit Sub ElseIf IsDate(Me.txt01) <> True Then MsgBox "日付形式ではありません。" Me.txt01.SetFocus Exit Sub ElseIf Me.txt01.Value < Date Then '前チェック Debug.Print Me.txt01.Value MsgBox "今日より先" Me.txt01.SetFocus Exit Sub ElseIf Me.txt01.Value <= ckDate Then MsgBox "2日以上前!" Me.txt01.SetFocus Exit Sub End If 2番目の、Elseifからの日付範囲の条件設定が上手くいきません。 Me.txt01.valueの後ろを"<"を">"にしたり、"="を付けたりしましたが、希望通りになりません。 多分、もっとスマートな書き方が有るとは思うのですが、あとあとメンテナンスしやすい書き方をお教え頂けたら幸いです。

  • ユーザーフォームのSetFocusが働かない?

    エクセルのユーザーフォームにtextboxが2つとCommandButtonが2つ配置しています。 textbox1に入力されるのを10以下に限定するため、それ以上の数字が入力されるとExit時にエラーを表示し、textbox1にフォーカスを戻したいのです。 ですが、以下のようにするとエラー時にはtextbox2も飛ばしてCommandButton1にフォーカスされます。 どのようにするのが正解なのでしょうか。 よろしくお願いします。 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If CInt(TextBox1.Text) > 10 Then MsgBox ("ダメ") TextBox1.SetFocus End If End Sub

  • AccessVBA  SetFocusとGoToControlが正常に作動しない

    重複番号をチェックする機能を作っています。 重複番号が入力されると、エラーメッセージが出て、 OKを押すと番号を入れるテキストボックスにカーソルが移動し、空白にする、 という機能をつけましたが、 何度試してもカーソルが、隣のテキストボックスに移動してしまいます。 (エラーメッセージが出て、空白にするという動作は正常に行われます) SetFocusとGoToControlで試したのですが、 どちらも駄目でした。 原因が分かりません。 どなたかお分かりになりましたら、教えてください。 コードは下記のとおりです。 Private Sub AMコード_AfterUpdate() If DCount("AMコード", "Q_AM担当者登録チェック") >= 1 Then MsgBox ("すでに存在する番号です。別の番号を振りなおしてください。"), vbCritical, "番号重複" AMコード.SetFocus AMコード = "" End If End Sub

  • access setfocusについて

    いつもお世話になっております。 いろいろ調べたのですが行き詰っておりまして ご教授お願いします。 下記記述でsetfocusでエラーになってしまいます。 Private Sub コマンド_Click() If IsNull(Me.テキストボックスコントロール名) Then MsgBox "未入力です" Me.テキストボックスコントロール名.SetFocus End If テキストボックスの処理記述 End Sub https://www.moug.net/tech/acvba/0030005.html こちらを参考にしました。 よろしくお願いします。

  • エクセルVBAにて、2回エラーになってしまう

    現在、エクセルVBAにて、エラーのチェックを行っているのですが、 他の数値項目は問題ないのですが、下記の個所のみ、 エラーメッセージが2回出力されます。 (1回目のExitSubがきかない) お分かりになる方がおられましたら、ご回答、よろしくお願い致します。 '費用(明細1) Private Sub txtMei4_1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Set mytxt = Me.Controls("txtMei4_1") If mytxt.Text <> "" And _ IsNumeric(mytxt.Text) = False Then MsgBox "数値を入力してください" Cancel = True Exit Sub ←ここで、Exitせず、もう一度このPrivate Subに戻ってくる End If End Sub 他のテキストでも同様のチェックをしているのですが、 この部分のみ、msgboxが2回出力されます。 申し訳ありません。 よろしくお願い致します。

専門家に質問してみよう