アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2003で入力規則を使った場合、思った結果が出ない

A1セルに日付を入力します。但し入力規則を使って指定期間のみ入力可能としています。
指定期間とはB1セルとB2セルの日付の期間という意味です。
例えば、B1セルに2010年7月10日-B2セルに2010年8月10日とあれば、両日を含む、その期間です。
但し、B1セルとB2セルに入る日付はVLOOKUP関数にて別のシートより転送しています
(ファームコントロールボタンを使って)

そこで、A1セルに日付2010年7月15日を入力することが出来ます。
また、指定期間外(例-2010年7月9日)で入力すると、指定期間しか入力できませんと
エラーメッセージがでます。

ここで
A1セルより先に、B1セルとB2セルに日付が入ってる場合は、A1セルに入力規則通りの効果があるのですが
A1セルに日付が入力されたままで、ファームコントロールボタンを使いB1セル、B2セルに違う日付を選ぶと
A1セルの日付が期間外でも残ってしまいます。
この場合でも、A1セルに入力出来ないように、且つエラーメッセージが出るように出来ないでしょうか。

A 回答 (4件)

一般機能における妥協案です。


A1セル ユーザー設定
=AND(B1<=A1,A1<=B2,B1<>"",B2<>"")
[ ]空白を無視する のチェックを外す

さらに、B1,B2セルには =A1="" と作りたいところですが、、、
>VLOOKUP関数にて別のシートより転送しています
なのでボツ
さらに(ファームではなく)[フォーム]のコントロールは入力規則が及びません。

よって、条件付き書式で指定期間外になった場合、
セルの色を赤くするなどの処置をとってはいかがでしょうか
また、たとえばA2セルに
=IF(COUNT(A1,B1:B2)<>3,"",IF(AND(B1<=A1,A1<=B2),"","◆指定期間外◆"))
なんて数式も入れておくとよいかもしれません
    • good
    • 0

ワークシートのオブジェクトに、以下のコードを貼り付けてはいかがでしょうか。



Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ret As Long
If Range("A1").Value = "" Then Exit Sub
If Range("A1").Value < Range("B1").Value Or Range("A1").Value > Range("B2").Value Then
Ret = MsgBox("入力した値は正しくありません。" & vbCrLf & vbCrLf & "ユーザーの設定によって、セルに入力できる値が制限されています。", vbCritical)
Range("A1").Value = ""
Range("A1").Select
End If
End Sub
    • good
    • 0

お望みのことは入力規則で行える限界を超えた機能です。


自由に期間設定するならマクロで対処するしかないでしょう。
    • good
    • 0

こんにちは。



フォームのコントロールボタンを押した時にチェック処理を追加するしかないと思います・・・。
マクロで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!