Excel VBA質問箱 IV

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

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


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

【37980】入力規則つきのセルに対する値のコピー lespoir2 06/5/24(水) 15:29 質問[未読]
【37981】Re:入力規則つきのセルに対する値のコピー Statis 06/5/24(水) 16:23 回答[未読]
【38010】Re:入力規則つきのセルに対する値のコピー lespoir2 06/5/25(木) 8:21 質問[未読]
【38038】Re:入力規則つきのセルに対する値のコピー Statis 06/5/25(木) 13:13 発言[未読]
【38039】Re:入力規則つきのセルに対する値のコピー lespoir2 06/5/25(木) 13:37 お礼[未読]
【37982】Re:入力規則つきのセルに対する値のコピー Jaka 06/5/24(水) 16:43 発言[未読]

【37980】入力規則つきのセルに対する値のコピー
質問  lespoir2  - 06/5/24(水) 15:29 -

引用なし
パスワード
   セルに入力規則を定義しておけばそれ以外の値を直接入力するとエラー・メッセージが表示されます。ところが別のセルから形式を選択して貼り付け-値 とすると範囲外の値がコピーできてしまいます。例えば1から5のはずのセルに6を貼り付けることができます。
防ぐ方法はないでしょうか。

【37981】Re:入力規則つきのセルに対する値のコピー
回答  Statis  - 06/5/24(水) 16:23 -

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

これで如何かな?
セルA1を対象としています。

では該当のシートモジュールにて

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ma As Variant, C As Range
 For Each C In Target
   If C.Address(0, 0) = "A1" Then
     Ma = Application.Match(C.Value, Range((Mid(C.Validation.Formula1, 2))), 0)
     If IsError(Ma) Then
      MsgBox "その値は無効です。"
      Application.EnableEvents = False
      C.ClearContents
      Application.EnableEvents = True
     End If
   End If
 Next
End Sub

【37982】Re:入力規則つきのセルに対する値のコピー
発言  Jaka  - 06/5/24(水) 16:43 -

引用なし
パスワード
   >防ぐ方法はないでしょうか。
ろくな方法は無いと思います。
せいぜいSelectionChageやシートチェンジ等のイベントでカット&コピーモードを無効にするぐらいだと思います。
他コピー、ペストボタン類を無効にするとか.....。

【38010】Re:入力規則つきのセルに対する値のコピー
質問  lespoir2  - 06/5/25(木) 8:21 -

引用なし
パスワード
   Statisさん、早速ありがとうございます。
下記をSheet1に貼り付けて A1に入力したところ Ifの次の Ma = のところで
1004 Range メソッド失敗 となってしまいました。
抱かば負ぶえですみませんが。

ちなみに質問の趣旨はマクロで値を貼り付けていたところ範囲外に気づかなかったので
検知する方法があればと思った次第です。

▼Statis さん:
>こんにちは
>
>これで如何かな?
>セルA1を対象としています。
>
>では該当のシートモジュールにて
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>Dim Ma As Variant, C As Range
> For Each C In Target
>   If C.Address(0, 0) = "A1" Then
>     Ma = Application.Match(C.Value, Range((Mid(C.Validation.Formula1, 2))), 0)
>     If IsError(Ma) Then
>      MsgBox "その値は無効です。"
>      Application.EnableEvents = False
>      C.ClearContents
>      Application.EnableEvents = True
>     End If
>   End If
> Next
>End Sub

【38038】Re:入力規則つきのセルに対する値のコピー
発言  Statis  - 06/5/25(木) 13:13 -

引用なし
パスワード
   こんにちは
入力規則の「入力値の種類」なんですか?
また、その入力値を教えて下さい。
例:「リスト」ならSheet1のB1:B10 のように

【38039】Re:入力規則つきのセルに対する値のコピー
お礼  lespoir2  - 06/5/25(木) 13:37 -

引用なし
パスワード
   Statisさん、
ありがとうございます。
整数の範囲で 1-5 としたらエラーになりました。
本当にやりたかったのはリストなのですが、その場合はうまくメッセージを出力してくれます。(最初からこのテストをやるべきでした)
マクロで貼り付ける場合だとそこで進行がとまるので目的を達成します。
ということでとりあえずこれで結構です。
重ね重ねありがとうございました。

▼Statis さん:
>こんにちは
>入力規則の「入力値の種類」なんですか?
>また、その入力値を教えて下さい。
>例:「リスト」ならSheet1のB1:B10 のように

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