[[20081125103617]] 『入力規則の連動』(しんのすけ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『入力規則の連動』(しんのすけ)

 WinXP Excel2007 の環境です。

 セルのデータを変更すると、入力規則の選択範囲が自動で変更されるような
 設定は出来ますでしょうか?

 例:セルA1:”はい”or”いいえ”←入力規則で”リスト”から選択する設定
 現在は、B1のリストは ”標準”、”異常”、”普通”、”おかしい”の4つ
 実際は
   ”はい”の場合   標準or異常
   ”いいえ”の場合  普通orおかしい
 としたい為、B1:このセルの入力規則を変動させたいと思います。

 各リストは、ユーザから見えないよう別シートに記述してます。
 A1:はい A2:いいえ
 B1:標準 B2:異常 B3:普通 B4:おかしい といった具合。

 説明が下手でスイマセン。これでお願いします。

 ご参考。(ROUGE)
 
[[20051024111302]]『リストから選択』(若葉マーク) 


 ROUGE 様 回答ありがとうございます。
 過去スレを良く探さずスイマセン。 とても参考になり助かりそうです。

 この過去スレを見て入力規則は解決しそうなのですが、

 A1:”はい” B1:”標準” と選択した状態で
 A1を”いいえ”に変更してもB1のセル内容(”標準”)は変更されないですよね?
 入力規則が変更されて、リストでは”普通”、”おかしい”となっているので
 A1を変更した時点で自動で、変更されたリストの上端に変更(この場合”普通”)
 にできないでしょうか?

 よろしくお願いします。 しんのすけ


 そうなると、VBAでの制御になります。(ROUGE)

 先に紹介された中にも手順がありますが下記のような方法でできると思います。
http://www.kenzo30.com/ex_kisopoint/onepoint_sonota3.htm#Q4

 別シートにでも下記のような表を作成し、
   |  A  |  B  |  C  
 ――+―――――+―――――+―――――
 1 |はい   |標準   |普通   
 2 |いいえ  |異常   |おかしい 

 A1:A2に「はい・いいえ」
 B1:B2に「はい」
 C1:C2に「いいえ」
 というように名前を付けます。

 選択リストを設定したシートで
 A1のリストの「元の値」に「=はい・いいえ」
 B1のリストの「元の値」に「=INDIRECT(A1)」

 として、どうでしょうか。
 (Mook)

 こんな感じ。(ROUGE)
'----
Private Sub Worksheet_Change(ByVal Target As Range)
Dim txt As String
With Range("A1")
    If Intersect(Target, .Cells) Is Nothing Then Exit Sub
    Select Case .Value
        Case "はい": txt = "標準,異常"
        Case "いいえ": txt = "普通,おかしい"
        Case Else: Exit Sub
    End Select
    Application.EnableEvents = False
    With .Offset(, 1)
        With .Validation
            .Delete
            .Add Type:=xlValidateList, Formula1:=txt
        End With
        .Value = Split(txt, ",")(0)
    End With
    Application.EnableEvents = True
End With
End Sub

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.