Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8996 / 13646 ツリー ←次へ | 前へ→

【29912】パスワードの設定 VBAビギナー 05/10/16(日) 12:09 質問[未読]
【29913】Re:パスワードの設定 かみちゃん 05/10/16(日) 12:14 回答[未読]
【29914】Re:パスワードの設定 Kein 05/10/16(日) 13:40 回答[未読]
【29936】Re:パスワードの設定 VBAビギナー 05/10/17(月) 9:23 お礼[未読]

【29912】パスワードの設定
質問  VBAビギナー  - 05/10/16(日) 12:09 -

引用なし
パスワード
   VBA初心者です。このコードを実行すると、

Dim NewSheet As Worksheet
Dim myno As Integer
 On Error Resume Next
 Sheets("新清算書").Select
 Sheets("新清算書").Copy Before:=Sheets(2)
 Set NewSheet = Sheets(2)
  With Worksheets("メニュー")
   NewSheet.Name = .Range("A3").Value & .Range("B3").Value
   
   NewSheet.Range("D4").Value = .Range("A3").Value
   NewSheet.Range("F4").Value = .Range("B3").Value
  End With

ActiveWindow.DisplayGridlines = False

NewSheet.Select

myno = InputBox("パスワードを入れてください。", "Password")

Select Case myno
  Case myno = Empty
    MsgBox prompt:="パスワードを入力してください", Title:="何やってんの?"
     Application.DisplayAlerts = False
    NewSheet.Delete
   
    
  Case myno = aaa
    NewSheet.Visible = True
  
  Case Else
    MsgBox prompt:="パスワードが違います。", Title:="頑張って"
    Application.DisplayAlerts = False
    NewSheet.Delete
    
End Select
End Sub
によりパスワードを設定しているつもりなのですが、aaaとパスワードを入力してもパスワードが違いますというメッセージボックスが表示されます。解決方法がわかりません。
どのようにすればいいのでしょうか。またパスワードを設定するにあたり、Select Caseステートメント以外の方法がありましたらご教授よろしくお願いします。

【29913】Re:パスワードの設定
回答  かみちゃん E-MAIL  - 05/10/16(日) 12:14 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Case myno = aaa

これですと、aaaという変数とチェックをしていることになります。
「aaa」という文字列とチェックしたいならば、
Case myno = "aaa"
とします。
なお、VBAコードを記述するときは、
Option Explicit
を先頭に記述して変数を強制宣言するようにすると、今回のような事態はあらかじめわかります。

【29914】Re:パスワードの設定
回答  Kein  - 05/10/16(日) 13:40 -

引用なし
パスワード
   InputBox関数の戻り値は、文字列型にしかなりませんから

Dim myno As String

として

Select Case myno
  Case ""
   MsgBox prompt:="パスワードを入力してください", Title:="何やってんの?"
   Application.DisplayAlerts = False
   NewSheet.Delete
   Application.DisplayAlerts = True
  Case "aaa"
   NewSheet.Visible = True
  Case Else
   MsgBox prompt:="パスワードが違います。", Title:="頑張って"
   Application.DisplayAlerts = False
   NewSheet.Delete
   Application.DisplayAlerts = True
End Select

と、します。また
>NewSheet.Visible = True
は、前にNewSheetを作っている(その時点でアクティブになっている)にも拘わらず
一度も Visible = False にしていないのだから、無駄な処理になってます。
>NewSheet.Select


NewSheet.Visible = False

と、変更するべきでしょう。

【29936】Re:パスワードの設定
お礼  VBAビギナー  - 05/10/17(月) 9:23 -

引用なし
パスワード
   私のミスであり簡単な事でした。すいません。
無事にパスワードを設定する事ができました。
有難うございました。

8996 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free