マクロ初心者です。どこがまちがっているのかわかりません 【指示したい内容】 「シートの表示」の名前でマクロ(プロシージャ)を作成
マクロ初心者です。どこがまちがっているのかわかりません 【指示したい内容】 「シートの表示」の名前でマクロ(プロシージャ)を作成 ①「InputBox」メソッドで入力画面を表示するコードを次の条件で作成する必要があり。 【作成条件】 ・InputBoxメソッドの格納用の変数「sheName」を文字列型で宣言し、その変数にInputBoxの値を代入する ・メッセージ内容(Prompt引数):"表示するシート名を入力してください" ・タイトルバーの文字(Title引数):"シートの表示" ②「InputBox」メソッドの「OK」、「キャンセル」ボタンが押された時の条件分岐処理を次の条件で記述する必要があり。 【作成条件】 ・「キャンセル」ボタンをクリック: "キャンセルしました。"の「MsgBox」を表示する ・「OK」ボタンをクリック(ボックスが空欄): "データが入力されていません。"の「MsgBox」を表示する ・「OK」ボタンをクリック(ボックスが各シートの店舗名と一致する文字):同名のシートを選択(アクティブに)する・・条件分岐には、SelectCaseステートメントを使用する ③の入力文字以外で「OK」ボタンがクリックされた場合のエラー回避処理を次の条件で記述する必要があり。 【作成条件】 ・エラー処理には「On Error GoTo」ステートメントを使用する ・エラーが発生した時の処理:"該当の店舗は存在しません。"の「MsgBox」を表示する ・「On Error GoTo」ステートメントの行ラベルは「エラーメッセージ」とする <<書いたマクロ文>> Sub シートの表示() Dim sheName As String sheName = InputBox("表示するシート名を入力してください", "シートの表示") Select Case sheName Case "false" MsgBox "キャンセルしました" Case "" MsgBox "データが入力されていません" Case sheName = worksheetname Worksheet Activate End Select On Error GoTo エラーメッセージ Exit Sub エラーメッセージ: MsgBox "該当の店舗は存在しません" End Sub ※作成条件以外の方法は使ってはいけない いやはや難しい…
Visual Basic | Excel・51閲覧・50
ベストアンサー
Input関数になっていますね。 メソッドは 変数=Application.Input・・・ でもこの場合関数のほうがシンプルでいいですね。 sheName = worksheetname がおかしくて、 worksheetnameは変数でもないしプロパティでもないので構文になっていないです。 それとInput関数の戻り値にFalseは無いです。 一つの例です。Defaultは入れてやったほうが親切です。 Sub シートの表示() Dim sheName As String sheName = InputBox("表示するシート名を入力してください", Default:="Sheet2", Title:="シートの表示") Select Case sheName Case "" MsgBox "データが入力されていないか、もしくはキャンセルしました。" Case Else On Error Resume Next Worksheets(sheName).Activate If Err.Number <> 0 Then MsgBox "該当の店舗は存在しません" End If End Select End Sub
質問者からのお礼コメント
いけました!! いやー助かりました…有難うございました!
お礼日時:5/25 23:30