Excel VBA質問箱 IV

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

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


13268 / 13644 ツリー ←次へ | 前へ→

【6196】セルの入力規制について Jun 03/6/19(木) 10:30 質問
【6216】Re:セルの入力規制について BOTTA 03/6/19(木) 14:12 回答
【6220】Re:セルの入力規制について Jun 03/6/19(木) 14:35 質問
【6231】Re:セルの入力規制について BOTTA 03/6/19(木) 18:05 回答
【6240】Re:セルの入力規制について Jun 03/6/20(金) 9:07 お礼

【6196】セルの入力規制について
質問  Jun  - 03/6/19(木) 10:30 -

引用なし
パスワード
   初めてExcelVBAを使用します。
セルの入力規制について教えてください。
シート全体に保護を掛け、1行目のみセルをロックしています。
この状態で、
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("e:e").Validation
  .Delete
  .Add Type:=xlValidateWholeNumber, _
    AlertStyle:=xlValidAlertInformation, _
    Formula1:="5", Formula2:="10"
    .ErrorTitle = "整数値"
  .ErrorMessage = "入力できるのは、5 から 10 までの値です。"
  Cells(ActiveCell.Row - 1, ActiveCell.Column).Select
End With
End Sub
のように入力規制を行おうとすると
「アプリケーション定義またはオブジェクト定義のエラーです」
とのエラーが発生します。
このような制御は無理なのでしょうか?

【6216】Re:セルの入力規制について
回答  BOTTA  - 03/6/19(木) 14:12 -

引用なし
パスワード
   Junさん、こんにちは。
このコードでは、セルに値を入力するたびに、入力規則を設定してしまいます。
同じセル範囲に、同じ入力規則を何度も設定するのは、あまり意味がないと思います。

例えば、BOOKをOPENしたとき→Private Sub Workbook_Open()等に設定する。

それと、保護されたシートに入力規則を設定することは出来ません。
一旦、解除して→ActiveSheet.Unprotectを加える。
終了時、再度保護→ActiveSheet.Protectとする。

例)BOOKをOPENした時のコード
Private Sub Workbook_Open()
  With Worksheets("Sheet1") '←適宜Sheet名を変更して下さい
    .Unprotect
    .Cells.Locked = False
    .Range("1:1").Locked = True
    With .Range("e:e").Validation
      .Delete
      .Add Type:=xlValidateWholeNumber, _
      AlertStyle:=xlValidAlertInformation, _
      Formula1:="5", Formula2:="10"
      .ErrorTitle = "整数値"
      .ErrorMessage = "入力できるのは、5 から 10 までの値です。"
    End With
    .Protect
  End With
  '↓入力後にセルを上へ移動する場合この4行も記述
  With Application
    .MoveAfterReturn = True
    .MoveAfterReturnDirection = xlUp
  End With
End Sub
これをThisWorkbookモジュールに貼り付けて試してみて。
尚、シート保護時のパスワードは設定していません。

【6220】Re:セルの入力規制について
質問  Jun  - 03/6/19(木) 14:35 -

引用なし
パスワード
   BOTTA さん ありがとうございます。
早速お教えいただいたとおり試してみました。
うまく動きました。
ところで、

>  '↓入力後にセルを上へ移動する場合この4行も記述
>  With Application
>    .MoveAfterReturn = True
>    .MoveAfterReturnDirection = xlUp
>  End With

とありますが、例えばエラー値が入力された場合のみ
そのセルへ戻すということも可能なのでしょうか?

【6231】Re:セルの入力規制について
回答  BOTTA  - 03/6/19(木) 18:05 -

引用なし
パスワード
   Junさん、こんにちは。
>とありますが、例えばエラー値が入力された場合のみ
>そのセルへ戻すということも可能なのでしょうか?
AlertStyle:=xlValidAlertInformationを

AlertStyle:=xlValidAlertStop
にすれば、いいかも。

【6240】Re:セルの入力規制について
お礼  Jun  - 03/6/20(金) 9:07 -

引用なし
パスワード
   BOTTA さん ありがとうございます。
できました!
今日もまたよろしくお願いいたします。

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