Excel VBA質問箱 IV

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

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


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

【44139】数字の並び順に条件をつけたいのですが・・・。 VBA修行中 06/11/6(月) 9:54 質問[未読]
【44143】Re:数字の並び順に条件をつけたいのですが... Blue 06/11/6(月) 10:22 回答[未読]
【44145】Re:数字の並び順に条件をつけたいのですが... Blue 06/11/6(月) 10:32 発言[未読]
【44147】Re:数字の並び順に条件をつけたいのですが... VBA修行中 06/11/6(月) 11:11 お礼[未読]
【44144】Re:数字の並び順に条件をつけたいのですが... かみちゃん 06/11/6(月) 10:30 発言[未読]
【44146】Re:数字の並び順に条件をつけたいのですが... VBA修行中 06/11/6(月) 11:09 お礼[未読]

【44139】数字の並び順に条件をつけたいのですが・...
質問  VBA修行中  - 06/11/6(月) 9:54 -

引用なし
パスワード
   セルのA1からI1までに任意で数字を入れて、

A1 B1 C1 D1 E1 F1 G1 H1 I1
1  1  1  1  2  2  2  1  1

上記のように数字を並べて数字の"2"の右のセルに"1"を入れるのを禁止と
いう条件のコードを作りたいのですが、どうすればよいでしょうか?

【44143】Re:数字の並び順に条件をつけたいのです...
回答  Blue  - 06/11/6(月) 10:22 -

引用なし
パスワード
   ▼VBA修行中 さん:
>数字の"2"の右のセルに"1"を入れるのを禁止
セルの範囲が決まっているのであれば、入力規則で十分のようですが。

B1:I1を選択して、データ→入力規則

データの入力規則ダイアログ、設定タブ
 入力の種類:ユーザ定義
 数式   : =OR(A1<>2,B1<>1)

OK

【44144】Re:数字の並び順に条件をつけたいのです...
発言  かみちゃん  - 06/11/6(月) 10:30 -

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

>上記のように数字を並べて数字の"2"の右のセルに"1"を入れるのを禁止と
>いう条件のコードを作りたい

Blueさんから入力規則の案が提示されましたが、VBAでの方法を作ってみましたので
参考にしてみてください。
なお、このコードは、シートモジュールに記述します。

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim vntMax
 
 With Target
  If .Count > 1 Then Exit Sub
  If IsEmpty(.Value) Then Exit Sub
  
  If .Column > 1 Then
   vntMax = Application.WorksheetFunction.Max(Range(.Offset(, (.Column - 2) * -1), .Offset(, -1)))
   If .Value < vntMax Then
    MsgBox vntMax & "より大きい値を入力できません"
    .ClearContents
    .Select
   End If
  End If
 End With
End Sub

【44145】Re:数字の並び順に条件をつけたいのです...
発言  Blue  - 06/11/6(月) 10:32 -

引用なし
パスワード
   ちなみに、表題どおり
>数字の並び順に条件をつけたい
ならば、式を

=A1<=B1

とでもすればよさそう。

【44146】Re:数字の並び順に条件をつけたいのです...
お礼  VBA修行中  - 06/11/6(月) 11:09 -

引用なし
パスワード
   ▼かみちゃん さん:

>Private Sub Worksheet_Change(ByVal Target As Range)
> Dim vntMax
> 
> With Target
>  If .Count > 1 Then Exit Sub
>  If IsEmpty(.Value) Then Exit Sub
>  
>  If .Column > 1 Then
>   vntMax = Application.WorksheetFunction.Max(Range(.Offset(, (.Column - 2) * -1), .Offset(, -1)))
>   If .Value < vntMax Then
>    MsgBox vntMax & "より大きい値を入力できません"
>    .ClearContents
>    .Select
>   End If
>  End If
> End With
>End Sub

とても参考になりましたありがとうございます。
さっそく使わせてもらいます。

【44147】Re:数字の並び順に条件をつけたいのです...
お礼  VBA修行中  - 06/11/6(月) 11:11 -

引用なし
パスワード
   ▼Blue さん:
>ちなみに、表題どおり
>>数字の並び順に条件をつけたい
>ならば、式を
>
>=A1<=B1
>
>とでもすればよさそう。

入力規則とは気づきませんでした。
ご親切にありがとうございました。

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