[[20080306115646]] 『プルダウンの初期値の表示』(もも) ページの最後に飛ぶ

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

 

『プルダウンの初期値の表示』(もも)

 下記のような関数を作っています。
 VLOOKUPはりんごを選択した時に、A2は青森、A3はA-1が表示されますが
 A4は空白でプルダウンから選択します。
 A4はプルダウンで選択したいのですが、まず初期値(りんごなら◎1)を
 表記したいのですが可能でしょうか?

     A  B  C  
  1  A1 入力規則 リストから選択で(りんご、みかん、もも)
  2  A2= VLOOKUP($A$2,$A$5:$C$7,2,FALSE)
  3  A3= VLOOKUP$A$2,$A$5:$C$7,3,FALSE) 
  4  A4 入力規則=INDEX($A$11:$C$12,MATCH($A$2,$A$10:$C$10,))
  5 りんご 青森  A-1  
  6 みかん 和歌山 B-1
  7 もも  山梨  C-1
  8
  9
 10りんご みかん もも
 11 ◎1  ●   ☆ 
 12 ◎   ◎


 「A4が空白だと、ドロップダウンリストがトップから並ばないことがある」と云うことでしたら、
 リスト内の空白セルに「半角スペース」でも強制的に入力しておくことで解消すると思います。

 (半平太)

半平太さんコメントありがとうございます。
しかし「A4が空白だと、ドロップダウンリストがトップから並ばないことがある」
という事でなく、このデータを営業さんに入力してもらうのですが
本来は必ずA4のセルを選択しなければならないのですが
A4のセルにポイントをあわせないとプルダウンマーク?がでてこない
入力を忘れてしまう人が多いのです。
大方はりんごなら◎1、みかんなら●、でプルダウンで選択する
初期値を入力すればよいので、まず初期値が表示されるようにしたいのですが
おわかりになりますか?

それともマクロなら出来るんでしょうか・・・
マクロは全く判らないのですけれども。


 やはり、そちらの方でしたか、、、

 一般機能では無理だと思います。
 マクロなら可能でしょう。

 >マクロは全く判らないのですけれども。
 と云うことなので、あまり気が進みませんが、

 シート見出しを右クリックして、「コードの表示」を選択すると、
 画面中央にコードシートが出ますので、以下のマクロを貼り付けてください。

 Private Sub Worksheet_Change(ByVal Target As Range)
     Application.EnableEvents = False
        If Target.Address = "$A$1" Then
           With WorksheetFunction
             On Error Resume Next
                Range("A4") = .HLookup(Target.Value2, Range("A10:C12"), 2, False)
                If Err.Number <> 0 Then Range("a4").Value = ""
             On Error GoTo 0
           End With
        End If
    Application.EnableEvents = True
 End Sub

 Alt + F11で エクセルに復帰してください。

 ※ 何かトラブって、ワークシートが無反応になったと感じたときは、
    以下のマクロを走らせてください。

 Sub rcovery()
    Application.EnableEvents = True
 End Sub

 (半平太)

半平太さんありがとうございます。
がんばってやってみます!

(もも)


半平太さん

ご指導頂いたとおりに、やってみたんですが、

>Range("A10:C12"),

となっているので選択できるようになっていると思うのですが、

りんごなら◎1、みかんなら●しか表示されず選択が出来ません・・・

>Sub rcovery()

 Application.EnableEvents = True
 End Sub

も入力したんですけど、変わりありません。
どうしたらよいもんでしょうか?
再度ご指導いただけると嬉しいです。

(もも)


 >大方はりんごなら◎1、みかんなら●、でプルダウンで選択する初期値を入力すればよいので、
 >まず初期値が表示されるようにしたいのですがおわかりになりますか? 

 分かっていなかったようです。<(_ _)>

 >>Range("A10:C12"), 
 >となっているので選択できるようになっていると思うのですが、 

 これは、初期値検索→表示にしているだけで、「選択」できるようにしているものではありません。
 以下のコードに変更してみてください。

 Private Sub Worksheet_Change(ByVal Target As Range)
     Application.EnableEvents = False

        If Target.Address = "$A$1" Then
           With WorksheetFunction
             On Error Resume Next
                Range("A4") = .HLookup(Target.Value2, Range("A10:C12"), 2, False)
                If Err.Number <> 0 Then Range("a4").Value = ""
             On Error GoTo 0
           End With
           Range("A4").Select
           SendKeys "%{down}"
        End If

    Application.EnableEvents = True

 End Sub

 (半平太)


半平太さんありがとうございます。

また貼り付けてみたのですが、りんごなら◎1、◎が選択したいんですけど
初期値に◎1は出てくるのですが、次の選択肢がA-1、みかん、もも、青森
となってしまいます。
前回と、今回のマクロの違いが 
Range("A4").Select
SendKeys "%{down}"

だけだったみたいなので試しに
Range("A10:C12").Select
SendKeys "%{down}"
と入力してみましたが、表示のみで選択できませんでした・・・

もう一度ご指導いただけると助かります m(_ _)m
恐縮ですが、同じ様に初期値を表示して更に選択が出来る
セルがもう一つ必要なのですが

10りんご みかん もも

11 ◎1  ●   ☆ 

12 ◎   ◎

13 △1  △   □

14 △       ■  
B4で13,14のセルで選択できる物を表示したいです。

 お時間ありましたらまた宜しくお願い致します。
 私のPCですと改行をしても文章が続いてしまい、2回改行をしてようやく
 改行されますので見難い文章になっており、すいません。

(もも)


 >私のPCですと改行をしても文章が続いてしまい、
 >2回改行をしてようやく改行されますので・・・
 ←行頭に半角スペースを入れると改行されます。
 (dack)

    A  B  C  
  1  A1 入力規則 リストから選択で(りんご、みかん、もも)
  2  A2= VLOOKUP($A$2,$A$5:$C$7,2,FALSE)
  3  A3= VLOOKUP$A$2,$A$5:$C$7,3,FALSE) 
  4 A5の値で変化するように 数式を 
  5 A5入力規則=INDEX($A$11:$C$12,MATCH($A$2,$A$10:$C$10,))  文字、背景を しろ色に  
  6 りんご 青森  A-1    3行下の行へ移動
  7 みかん 和歌山 B-1
  8もも   山梨  C-1
  9
 10りんご みかん もも
 11 ◎1  ●   ☆ 
 12 ◎   ◎
 に変更すれば
 =if(A5="",初期設定値(りんごならりんご対応の初期値、みかんならみかん対応の初期値),A5)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

 関数 条件書式で 出来るかと         


 >また貼り付けてみたのですが、りんごなら◎1、◎が選択したいんですけど初期値に◎1は出てくるのですが、
 >次の選択肢がA-1、みかん、もも、青森となってしまいます。
 私は、入力規則の設定については何も触っておりません。(そちらで設定された通りに反応するハズです。)
 A4セルは、こんな風になっているのではなかったですか?
     ↓
 >  4  A4 入力規則=INDEX($A$11:$C$12,MATCH($A$2,$A$10:$C$10,))

 もっとも、なぜ「A2」がキーなのか分からないのですけど。
 なぜ、こうでないのでしょう。 (この辺りのことは、ももさんサイドの問題と認識していますが。)
      ↓
   A4 入力規則 =INDEX($A$11:$C$12,0,MATCH($A$1,$A$10:$C$10,0))

 >前回と、今回のマクロの違いが  Range("A4").Select SendKeys "%{down}" 
 >だけだったみたいなので試しに Range("A10:C12").Select SendKeys "%{down}" と入力してみましたが、
 何のためにその様な変更が必要なのか飲み込めません。 

 >同じ様に初期値を表示して更に選択が出来るセルがもう一つ必要なのですが 
 A4の問題が解決しない限り、先に進む気にはなれません。

 (半平太)

 >A4 入力規則=INDEX($A$11:$C$12,MATCH($A$2,$A$10:$C$10,))
 もっとも、なぜ「A2」がキーなのか分からないのですけど。
 なぜ、こうでないのでしょう。 (この辺りのことは、ももさんサイドの問題と認識していますが。)
      ↓
 A4 入力規則 =INDEX($A$11:$C$12,0,MATCH($A$1,$A$10:$C$10,0))

 ↑半平太さんのおっしゃる通り「A2」でなく、「A1」です。単なるうち間違いでした m(_ _)m

 >前回と、今回のマクロの違いが  Range("A4").Select SendKeys "%{down}" 
 >だけだったみたいなので試しに Range("A10:C12").Select SendKeys "%{down}" と入力してみましたが、
 何のためにその様な変更が必要なのか飲み込めません
 ↑本当にマクロ初心者なので適当にいじってみただけでした・・・

 もう少し勉強してみます。
 もし、「もう少しみてあげてもいいかな。」と思って頂ければお返事お待ちしてます

 もも


 >「A2」でなく、「A1」です。単なるうち間違いでした

 そうだとしますと、上のマクロが作動し、
 A4セルは、既存の入力規則に従って自動的にドロップダウンが
 開きませんか?(つまり、選べるようになりませんか?)

 当方の環境では問題なく開いているのですが、、、

 「選べるようになる」とはそういう意味でもないのでしょうか?

 (半平太)

 半平太さん
 >A4セルは、既存の入力規則に従って自動的にドロップダウンが
 >開きませんか?(つまり、選べるようになりませんか?)
 自動的にドロップダウンが開くのですが、開くドロップダウンが異なるんです。
 前回も書いた通、A1がりんごだと◎1、A-1、みかん、もも、りんご、青森
 でドロップダウンが開きます。

 >当方の環境では問題なく開いているのですが、、、
 なぜ、私のエクセルで◎1、◎のドロップダウンが開かないのか不思議です・・・
 もうすこし勉強してみます。
 どうもありがとうございました。

 もも

 > 前回も書いた通、A1がりんごだと◎1、A-1、みかん、もも、りんご、青森
 なんかハチャメチャなリストですね。それだと元々の入力規則に問題があると云うことになります。

  入力規則の数式はこう云うもののハズなんですけど。。。 Matchの前が「,0」になっていますか?
           ↓
 =INDEX($A$11:$C$12,0,MATCH($A$1,$A$10:$C$10,0))

 「行」はすべてが対象になるので、INDEXの「第二引数は0」である必要があります。

 下手に「0」を省略するのは、視認性が落ち、ミスの元になるので好ましくないと思います。
 (達人を気取りたくてそうするのかも知れませんが、私は不賛成です)

 もし、上の処置で上手くいくのでしたら、B4の問題は

 >同じ様に初期値を表示して更に選択が出来るセルがもう一つ必要なのですが 

 B4セルの入力規則は、下式。
 =INDEX($A$13:$C$14,0,MATCH($A$1,$A$10:$C$10,0))

 置き換えるマクロは下記。

 Private Sub Worksheet_Change(ByVal Target As Range)
     Application.EnableEvents = False
        If Target.Address = "$A$1" Then
             Range("A4").Formula = "=HLOOKUP($A$1,A10:C12,2,FALSE)"
             Range("B4").Formula = "=HLOOKUP($A$1,A10:C14,4,FALSE)"
             Range("A4:B4").Value = Range("A4:B4").Value
             Range("A4").Select
             SendKeys "%{down}"
        ElseIf Target.Address = "$A$4" Then
            Range("B4").Select
            SendKeys "%{down}"
        End If
    Application.EnableEvents = True
 End Sub

 また当方の勘違いでなければいいのですが、、、

 (半平太)

半平太さん

 やっと私の間違いがわかりました。入力規則をいれずにマクロだけはりつけていました!!
  わかるのがかなり遅く、御礼が遅くなりすいません。
 色々ご指導いただきまして、本当にありがとうございました。

コメント返信:

[ 一覧(最新更新順) ]


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