Excel VBA質問箱 IV

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

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


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

【58968】シート保護のパスワードを利用して プリ 08/11/20(木) 19:29 質問[未読]
【58969】Re:シート保護のパスワードを利用して ponpon 08/11/20(木) 21:31 発言[未読]
【58988】Re:シート保護のパスワードを利用して プリ 08/11/21(金) 18:18 お礼[未読]
【58989】Re:シート保護のパスワードを利用して ponpon 08/11/21(金) 19:55 発言[未読]
【58990】Re:シート保護のパスワードを利用して プリ 08/11/21(金) 21:07 お礼[未読]
【58991】Re:シート保護のパスワードを利用して ponpon 08/11/21(金) 22:10 発言[未読]
【59330】Re:シート保護のパスワードを利用して プリ 08/12/6(土) 17:54 発言[未読]
【59331】Re:シート保護のパスワードを利用して arajin 08/12/6(土) 18:47 回答[未読]
【59332】Re:シート保護のパスワードを利用して プリ 08/12/6(土) 19:33 お礼[未読]
【59333】Re:シート保護のパスワードを利用して arajin 08/12/6(土) 20:37 回答[未読]
【59336】Re:シート保護のパスワードを利用して プリ 08/12/6(土) 23:59 お礼[未読]

【58968】シート保護のパスワードを利用して
質問  プリ  - 08/11/20(木) 19:29 -

引用なし
パスワード
   こんにちは

Private Sub CommandButton1_Click()
  ActiveCell.Select
  ActiveCell.FormulaR1C1 = "12"
End Sub


上のコードに、パスワードをかけたいのですが
保護シートのパスワードでパスワードしたいのですが、
分かりますでしょうか?

流れは、コマンドボタンをクリックするとパスワードを聞かれます
パスワードはシート保護時のパスワードと同じです。
パスワードが違っていれば、メッセージを出し、合っていればActiveCellに12を表示
シート保護されていない時は、パスワード入力がいらないという複雑なんですが、できるでしょうか?

【58969】Re:シート保護のパスワードを利用して
発言  ponpon  - 08/11/20(木) 21:31 -

引用なし
パスワード
   参考になれば。

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=58887;id=excel

【58988】Re:シート保護のパスワードを利用して
お礼  プリ  - 08/11/21(金) 18:18 -

引用なし
パスワード
   ponponさん回答ありがとうございます。
URLを参照して実行してみました。
すでにシート保護でpasswordを設定してあり、そのpasswordを利用したいです。
そして、シート保護を解除すると、コマンドボタンのpasswordも一緒に解除できる事は可能でしょうか?

【58989】Re:シート保護のパスワードを利用して
発言  ponpon  - 08/11/21(金) 19:55 -

引用なし
パスワード
   ▼プリ さん:
▼プリ さん:

>>流れは、コマンドボタンをクリックするとパスワードを聞かれます
>>パスワードはシート保護時のパスワードと同じです。
>>パスワードが違っていれば、メッセージを出し、合っていればActiveCellに12を表示
>>シート保護されていない時は、パスワード入力がいらないという複雑なんですが、できるでしょうか?

>すでにシート保護でpasswordを設定してあり、そのpasswordを利用したいです。
>そして、シート保護を解除すると、コマンドボタンのpasswordも一緒に解除できる事は可能でしょうか?

いまいち仕様がわかりません。

(1)コマンドボタンをクリック
 これはフォームのもの?それともコントロールツールボックスのもの?

(2)シートが保護されていれば、パスワードを要求。合っていればActiveCellに12を表示。
 ActiveCellのアドレスは?(決まっていないのかな?)

(3)シート保護されていない時は、パスワード入力がいらないで、ActiveCellに12を表示。
 シートの保護は手動でしょうか? 保護されていない場合もある?

【58990】Re:シート保護のパスワードを利用して
お礼  プリ  - 08/11/21(金) 21:07 -

引用なし
パスワード
   説明不足です申し訳ありません。
(1)ユーザーフォームです
(2)ActiveCellのアドレスは決まっていません。
(3)シートの保護は手動です。
 保護されていない場合もあります。

【58991】Re:シート保護のパスワードを利用して
発言  ponpon  - 08/11/21(金) 22:10 -

引用なし
パスワード
   ▼プリ さん:
>説明不足です申し訳ありません。
>(1)ユーザーフォームです
  ユーザーフォームですか?

>(2)ActiveCellのアドレスは決まっていません。
>(3)シートの保護は手動です。
>  保護されていない場合もあります。

こんな感じかなぁ・・・

標準モジュールで確かめてよければコマンドボタンで
実行してみてください。
ActiveSheetやActiveCellを使っているので不確実だとは思いますが・・


Sub test()
  Dim res As String
  
  If ActiveSheet.ProtectContents = True Then
    res = Application.InputBox("パスワードをどうぞ", Title:="パスワード入力", Type:=2)
    If res = "password" Then
     Sheet1.Unprotect Password:="password"
     ActiveCell.Value = 12
    Else
     MsgBox "パスワードが違います。 残念!"
     Exit Sub
    End If
  Else
    ActiveCell.Value = 12

  End If
End Sub

【59330】Re:シート保護のパスワードを利用して
発言  プリ  - 08/12/6(土) 17:54 -

引用なし
パスワード
   ponponさんありがとうございます。
出張へ行ってまして返事が遅れ本当にすいません。
続きなんですが、もしよろしければ是非回答お願いします。

パスワードはコードの中で決めずにシート保護の時のパスワードを利用したいと思っております。
シート保護のパスワードが解除された場合、パスワードがなくてもコマンドボタンを押すと、12を返すようにしたいと思っております。

どうかお願いします。

【59331】Re:シート保護のパスワードを利用して
回答  arajin  - 08/12/6(土) 18:47 -

引用なし
パスワード
   パスワード候補を入力させたら、その入力値でロック解除を試せばいいのではないですか?

Private Sub CommandButton1_Click()
Dim ret As Variant
With ActiveSheet
  If .ProtectContents Then
    ret = Application.InputBox("パスワードをどうぞ", Title:="パスワード入力", Type:=2)
    If VarType(ret) = vbBoolean Then Exit Sub
    On Error GoTo ErrHndl
    .Unprotect ret
    On Error GoTo 0
    ActiveCell.Value = 12
    .Protect ret
  Else
    ActiveCell.Value = 12
  End If
End With
Exit Sub
ErrHndl:
  MsgBox Err.Description, vbExclamation
End Sub


(注意)
・シート保護は、パスワードロックされている前提です。
・厳密にやるなら、例えばシート保護時のオプション指定がある場合には、
解除前に各々現設定を記憶しておいて、再度保護かける際には、
元の設定と同様に設定してやる必要があるでしょう。

【59332】Re:シート保護のパスワードを利用して
お礼  プリ  - 08/12/6(土) 19:33 -

引用なし
パスワード
   arajin さんありがとうございます。
見事に出来ました。
ActiveCell.Value = 12 は、2回記述されてますが、1回にすることは出来ますか?

【59333】Re:シート保護のパスワードを利用して
回答  arajin  - 08/12/6(土) 20:37 -

引用なし
パスワード
   ▼プリ さん:
>arajin さんありがとうございます。
>見事に出来ました。
>ActiveCell.Value = 12 は、2回記述されてますが、1回にすることは出来ますか?

そんなのは、自分で工夫して欲しいところでっせ。

そういうのは、もうコーディング者の好みだと思いますけどね。

Private Sub CommandButton1_Click()
Dim ret As Variant
Dim f As Boolean
With ActiveSheet
  f = .ProtectContents
  If f Then
    ret = Application.InputBox("パスワードをどうぞ", Title:="パスワード入力", Type:=2)
    If VarType(ret) = vbBoolean Then Exit Sub
    On Error GoTo ErrHndl
    .Unprotect ret
    On Error GoTo 0
  End If
  ActiveCell.Value = 12
  If f Then .Protect ret
End With
Exit Sub
ErrHndl:
  MsgBox Err.Description, vbExclamation
End Sub

とかですかね〜。

まあ、ご自分の好みにあう方法を探ってみて下さいよ。

【59336】Re:シート保護のパスワードを利用して
お礼  プリ  - 08/12/6(土) 23:59 -

引用なし
パスワード
   arajinさん最後までありがとうございました。
感謝致します。

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