• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL-VBマクロで教えて下さい)

EXCEL-VBマクロでパスワード入力時のキャンセル操作について

このQ&Aのポイント
  • Excel-VBマクロにおいて、パスワードの入力を促す際に「キャンセル」キーを押した場合に、以降の操作を行わずにマクロを終了させる方法について教えてください。
  • マクロの中でパスワードの入力を求めるVBコードを記述し、入力が不正な場合は再度入力を促すループ処理を行います。しかし、キャンセルが押された場合にループを抜けてマクロの実行を終了させる方法が知りたいです。
  • 具体的なVBコードの挿入方法や処理の流れについて説明して頂けると助かります。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8536/19407)
回答No.1

ご参考。 http://www.moug.net/tech/exvba/0100036.html 上記のようにしてキャンセル判定し、キャンセル時には Exit Sub により、何もしないでマクロを終了すれば良いでしょう。 何もせずに Exit Sub すれば「マクロを実行してないのと一緒」ですからね。

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

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

参考に Dim myPassInput As String myPassInput = InputBox("入力してください", "パスワードの入力") If StrPtr(myPassInput) = 0 Then   MsgBox "キャンセルしました。" ElseIf myPassInput = Empty Then   MsgBox "何も入力されていません" Else   MsgBox myPassInput & " と、入力されました。" End If

sasa51244
質問者

お礼

ありがとうございます。何とかできそうです。

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

関連するQ&A

  • マクロを組むとこんなエラーが出るようになりました

    捺印君:Vel 1.25→(エクセルのフリーソフトです) PicturesクラスのPasteプロパティを取得出来ません。 予期せぬエラーが発生しました。 とエラーが出ます。 ちなみに組んでいるマクロは下記です Sub 全シートの保護() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Protect Password:=myPassword Next End Sub Sub 全シートの解除() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Unprotect Password:=myPassword Next End Sub このマクロがおかしいからエラーが出るんですよね? 違うマクロにすれば問題ないでしょうか? ちなみにマクロは「全シートの保護一括解除」と「一括保護」で パスワード付きの物をとなっております。

  • マクロで複数のシートを保護&パスワードをかける為に下記式を作成しました

    マクロで複数のシートを保護&パスワードをかける為に下記式を作成しましたが エラー”400”のみ出て上手く行きませんでした。 どこか式がおかしいのでしょうか。。。 一応式を入力しておきます。 超初心者でまったく意味がわからないので、どなたか宜しくお願い致しますm(__)m Sub AllProtect() Dim sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each sh In Worksheets sh.Protect Password:=1234 Next End Sub Sub AllUnprotect() Dim sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each sh In Worksheets sh.Unprotect Password:=1234 Next End Sub

  • エクセルで2つのマクロを結合したい

    毎度お世話名なっております。 以前ここで教えてもらった保存時に全シートの入力済みセルに自動で保護がかかる<マクロ1>を教えてえもらって非常に多くのBookに採用しているのですが、今回同じBookの「計算表」シートの特定のいくつかのセルだけ保護がかからないようにしたく試行錯誤で2つのマクロをつなげてみたのですが情けないことに期待通りに動かず。 単に最初のマクロのEnd Subを削除しただけではうまくいかず。 どなたかHELPお願い致します。 <マクロ1> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Const MyPassword = "" 'パスワード(省略可) Dim sh As Worksheet On Error Resume Next For Each sh In Worksheets sh.Unprotect Password:=MyPassword With sh.Cells '全セルのロックを外す .Locked = False '定数が含まれているセルにロックを掛ける .SpecialCells(xlCellTypeConstants).Locked = True '数式が含まれているセルにロックを掛ける .SpecialCells(xlCellTypeFormulas).Locked = True End With sh.Protect DrawingObjects:=True, Contents:=True, _ Scenarios:=True, Password:=MyPassword Next On Error GoTo 0 End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sub 保護解除() <マクロ2> ' 保護解除 Macro '' Sheets("計算表").Select Range("C6:D6").Select ActiveSheet.Unprotect End Sub

  • マクロ(Excel2007)を他のファイルで使う方法(マクロ初心者です

    マクロ(Excel2007)を他のファイルで使う方法(マクロ初心者です。) Excel2007の「4月」というファイルに印刷ボタンが作られており、 以下のマクロが登録されていました。 Sub 非表示(2)() ' ' 非表示(2) Macro ' ' Rows("130:193").Select Selection.EntireRow.Hidden = True ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" Selection.EntireRow.Hidden = False Range("A1").Select End Sub 「4月」ファイルを新しく「5月」ファイルとして名前を付けて保存したのですが、 どうやら、マクロ有効ブックとして保存していなかったらしく、 マクロが消えてしまっていました。 「5月」ファイルの印刷ボタン(オブジェクト)を選択して  右クリック→マクロの登録 から、「4月」ファイルの当該マクロを選択して登録したところ、 「5月」ファイルの印刷ボタンを押すたびに「4月」ファイルが開いてしまいます。 これは、「4月」ファイルに保存されているマクロを読みにいってしまっているから。 ということになるのでしょうか? このマクロを「5月」ファイルに保存して使用するにはどのようにすればよいか、 教えて頂ければ幸いです。

  • マクロ・複数シートに適用するには?

    初心者です。以下のマクロを組みました。 これを複数シートに適用するにはどうしたらよいのでしょうか? worksheets selectではうまくいきませんでした>< 具体的には1~80までのシートが数字で分けられており、 「目次」と「新規」以外の全てに適用したいです。 Sub Macro3() Dim sl As String Dim mySht As Worksheet sl = Range("A65536").End(xlUp).Address Range("B1", sl).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True For Each mySht In Worksheets Next End Sub

  • エクセル マクロ picture

    教えてもらいながら以下のような画像貼り付けマクロを組んだのですが,以下の点に引っかかり前進することができません. 教えて頂きたいと思い投稿しました. 躓いている点  シート内でボタンを利用して貼り付け及び削除をしているのですが,エクセルシート内でコピペするたびに「Selection.Name」と貼り付け先を修正しています. →これをコピペしても修正をしなくてもよいマクロはないでしょうか? 自作作成マクロ Sub 写真貼付1_Click() Dim AA As String, BB As String, CC As String 10 AA = InputBox("参照先を指定して下さい。例:D:\Photo001.jpg", "場所指定", AA) If (AA = "") Then AA = Application.GetOpenFilename(Title:="写真ファイルの場所はどこですか?") GoTo 10 End If ActiveSheet.Unprotect Range("m29").Select ActiveSheet.Pictures.Insert(AA).Select Selection.Name = "写真1" Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 310 Selection.ShapeRange.Width = 310# Selection.ShapeRange.IncrementLeft 1 Selection.ShapeRange.IncrementTop 1 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True End Sub -------------------------------------------------- Sub 写真削除1_Click() ActiveSheet.Shapes("写真1").Select Selection.Delete ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFormattingCells:=True End Sub ところどころ端折ってますが,以上のようなマクロです. よろしくお願いします.

  • マクロが実行しない

     二行三列を一枡として月の勤務割表を作成しています。マクロで同じ事を しているのにMacro1の方が実行しません。お教え願えませんでしょうか。 (尚、図形を枠線上にコピペしています。) Sub Macro1()実行しません。 Dim i As Integer Dim j As Integer For i = 10 To 43 Step 2 For j = 10 To 103 Step 3 Select Case Cells(i, j).Value Case 1: ActiveSheet.Shapes("四角形1").Select Selection.Copy Cells(i + 1, j + 1).Select ActiveSheet.Paste End Select Next Next End Sub Sub Macro2()実行します。 ActiveSheet.Shapes.Range(Array("四角形1")).Select Selection.Copy Range("J11:K11").Select ActiveSheet.Paste End Sub

  • マクロでExcelパスワードを入力する方法

    教えて頂きたいのですが、 今Excelのフォームボタンにマクロを使って、 別のExcelファイルを開けるように設定していますが、 そのファイルにパスワードを掛けており、フォームボタンを押すと、 まず、そのパスワード入力のダイアログが出ます。 それを、フォームボタンを押したときのマクロに組み込み、 パスワード入力のダイアログを出さずに開く事って可能でしょうか? 現在のフォームボタンに登録しているマクロの記述は下記の通りです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub Macro11() ' ' Macro11 Macro ' マクロ記録日 : 2008/9/25 ユーザー名 : ************ ' ' Range("I29").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True End Sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー I29にハイパーリンクにてアドレスを入力しているだけのものです。 宜しくお願いいたします。

  • excel2007マクロに関しまして

    excel2007マクロに関して不明な点があるので教えて頂きたいです。 シートが50枚ありそれぞれのシートのN列4~15行に対し そのシートのC列4~15行の値を60倍したものを記載したいのですが 下記入力内容中の Range("N " & j ).Select のところでRange メソッドの失敗が生じてしまいます。 その他にも不備があればご指摘頂きたいです。 宜しくお願いします。 Sub Macro6() ' ' Macro6 Macro ' Dim i, j As Integer For i = 1 To 50 With Sheets("ds1_" & i) Range("N3").Select ActiveCell.FormulaR1C1 = "Q(cum/m)" For j = 4 To 15 Range("N " & j ).Select ActiveCell.FormulaR1C1 = "=RC[-11]*60" Next j End With Next i End Sub

  • EXCELのマクロについて

    お世話になっております。 以下のマクロを1万行分繰り返したいのですが、回数を1万回と指定する構文を 教えてください。よろしくお願いします。 Sub Macro16() ' ' Macro16 Macro ' ' Keyboard Shortcut: Ctrl+Shift+Z ' ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Offset(-1, 0).Range("A1:M1").Select Selection.Copy ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "7/5/1905" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "7/6/1905" ActiveCell.Offset(1, -2).Range("A1").Select End Sub