Excel VBA質問箱 IV

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

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


10355 / 13646 ツリー ←次へ | 前へ→

【21635】条件付リストのような物は作成できますか? まつ 05/1/25(火) 16:31 質問[未読]
【21647】Re:条件付リストのような物は作成できます... ぴかる 05/1/25(火) 18:14 回答[未読]
【21659】Re:条件付リストのような物は作成できます... まつ 05/1/26(水) 8:48 質問[未読]
【21661】Re:条件付リストのような物は作成できます... ぴかる 05/1/26(水) 9:14 回答[未読]
【21651】Re:条件付リストのような物は作成できます... kobasan 05/1/25(火) 19:38 発言[未読]
【21660】Re:条件付リストのような物は作成できます... まつ 05/1/26(水) 8:51 質問[未読]
【21664】Re:条件付リストのような物は作成できます... Jaka 05/1/26(水) 9:50 回答[未読]
【22330】Re:条件付リストのような物は作成できます... まつ 05/2/16(水) 14:06 お礼[未読]
【21683】Re:条件付リストのような物は作成できます... kobasan 05/1/26(水) 18:07 回答[未読]
【22331】Re:条件付リストのような物は作成できます... まつ 05/2/16(水) 14:08 お礼[未読]
【21700】Re:条件付リストのような物は作成できます... ぴかる 05/1/27(木) 14:53 発言[未読]
【22329】Re:条件付リストのような物は作成できます... まつ 05/2/16(水) 14:05 お礼[未読]

【21635】条件付リストのような物は作成できますか...
質問  まつ  - 05/1/25(火) 16:31 -

引用なし
パスワード
   下記のような事がしたいのですが良い方法がありますか?

A1セルの値を条件とします。
B1セルにリスト・プルダウンのような物で
A1の値が1だったらリストの範囲がC1:D10
A1の値が2だったらリストの範囲がE1:F10
A1の値が3だったらリストの範囲がG1:H10
A1の値が4だったらリストの範囲がI1:J10
のように設定することができるでしょうか?
他の方法でもかまいません、どなたかお教えください。

【21647】Re:条件付リストのような物は作成できま...
回答  ぴかる  - 05/1/25(火) 18:14 -

引用なし
パスワード
   まつさん、こんにちは。

1列にすれば、こんなんでいけると思います。各リストを空きエリア(AA1〜)に1列リンク(計4列)させてみました。どうですぅ?

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Address(0, 0) = "A1" Then
    With Range("B1").Validation
      .Delete
      If Target.Value = 1 Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$AA$1:$AA$20"
      ElseIf Target.Value = 2 Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$AB$1:$AB$20"
      ElseIf Target.Value = 3 Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$AC$1:$AC$20"
      ElseIf Target.Value = 4 Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$AD$1:$AD$20"
      End If
    End With
  End If
  
End Sub

【21651】Re:条件付リストのような物は作成できま...
発言  kobasan  - 05/1/25(火) 19:38 -

引用なし
パスワード
   ▼まつ さん今晩は
>下記のような事がしたいのですが良い方法がありますか?
>
>A1セルの値を条件とします。
>B1セルにリスト・プルダウンのような物で
>A1の値が1だったらリストの範囲がC1:D10
>A1の値が2だったらリストの範囲がE1:F10
>A1の値が3だったらリストの範囲がG1:H10
>A1の値が4だったらリストの範囲がI1:J10
>のように設定することができるでしょうか?
>他の方法でもかまいません、どなたかお教えください。

データに","が入ってないなら、こんな方法もあります
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, st As String
  If Target.Address(0, 0) <> "A1" Then Exit Sub
  If Range("A1").Value < 1 Then Exit Sub
  If Range("A1").Value > 4 Then Exit Sub
  If Range("A1").Value = 1 Then st = "C1:D10"
  If Range("A1").Value = 2 Then st = "E1:F10"
  If Range("A1").Value = 3 Then st = "G1:H10"
  If Range("A1").Value = 4 Then st = "I1:J10"
  '
  'data="a,b,c"の形にするための処理
  data = ""
  For Each c In Range(st)
    If data = "" Then
      data = c.Text
    Else
      data = data & "," & c.Text
    End If
  Next
  '
  With Range("B1").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=data
  End With
End Sub

【21659】Re:条件付リストのような物は作成できま...
質問  まつ  - 05/1/26(水) 8:48 -

引用なし
パスワード
   ▼ぴかる さん:
>まつさん、こんにちは。
>
>1列にすれば、こんなんでいけると思います。各リストを空きエリア(AA1〜)に1列リンク(計4列)させてみました。どうですぅ?
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>
>  If Target.Address(0, 0) = "A1" Then
>    With Range("B1").Validation
>      .Delete
>      If Target.Value = 1 Then
>        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>        xlBetween, Formula1:="=$AA$1:$AA$20"
>      ElseIf Target.Value = 2 Then
>        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>        xlBetween, Formula1:="=$AB$1:$AB$20"
>      ElseIf Target.Value = 3 Then
>        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>        xlBetween, Formula1:="=$AC$1:$AC$20"
>      ElseIf Target.Value = 4 Then
>        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>        xlBetween, Formula1:="=$AD$1:$AD$20"
>      End If
>    End With
>  End If
>  
>End Sub
>
>
▼ぴかる さん:おはようございます。
早速の解凍ありがとうございます。
初心者なので教えてください。
B1セルをクリックしたときにリストをプルダウン等で表示し、
選択することができますか?

【21660】Re:条件付リストのような物は作成できま...
質問  まつ  - 05/1/26(水) 8:51 -

引用なし
パスワード
   ▼kobasan さん:
>▼まつ さん今晩は
>>下記のような事がしたいのですが良い方法がありますか?
>>
>>A1セルの値を条件とします。
>>B1セルにリスト・プルダウンのような物で
>>A1の値が1だったらリストの範囲がC1:D10
>>A1の値が2だったらリストの範囲がE1:F10
>>A1の値が3だったらリストの範囲がG1:H10
>>A1の値が4だったらリストの範囲がI1:J10
>>のように設定することができるでしょうか?
>>他の方法でもかまいません、どなたかお教えください。
>
>データに","が入ってないなら、こんな方法もあります
>Private Sub Worksheet_Change(ByVal Target As Range)
>Dim c As Range, st As String
>  If Target.Address(0, 0) <> "A1" Then Exit Sub
>  If Range("A1").Value < 1 Then Exit Sub
>  If Range("A1").Value > 4 Then Exit Sub
>  If Range("A1").Value = 1 Then st = "C1:D10"
>  If Range("A1").Value = 2 Then st = "E1:F10"
>  If Range("A1").Value = 3 Then st = "G1:H10"
>  If Range("A1").Value = 4 Then st = "I1:J10"
>  '
>  'data="a,b,c"の形にするための処理
>  data = ""
>  For Each c In Range(st)
>    If data = "" Then
>      data = c.Text
>    Else
>      data = data & "," & c.Text
>    End If
>  Next
>  '
>  With Range("B1").Validation
>    .Delete
>    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
>    xlBetween, Formula1:=data
>  End With
>End Sub
>
>
▼kobasan さん おはようございます。
早速の解凍ありがとうございます。
初心者なので教えてください。
B1セルをクリックしたときにリストをプルダウン等で表示し、
選択することができますか?

【21661】Re:条件付リストのような物は作成できま...
回答  ぴかる  - 05/1/26(水) 9:14 -

引用なし
パスワード
   まつさん、おはようございます。

こんな感じでどうでしょ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If Target.Address(0, 0) = "B1" Then
    With Range("B1").Validation
      .Delete
      If Range("A1").Value = 1 Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$AA$1:$AA$20"
      ElseIf Range("A1").Value = 2 Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$AB$1:$AB$20"
      ElseIf Range("A1").Value = 3 Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$AC$1:$AC$20"
      ElseIf Range("A1").Value = 4 Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$AD$1:$AD$20"
      End If
    End With
  End If

End Sub

【21664】Re:条件付リストのような物は作成できま...
回答  Jaka  - 05/1/26(水) 9:50 -

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

2列表示と言う事ですが、先に書いたように2列を表示する事は出来ないので、2列分表示できればいいと言う事にしました。
作業セルを使って、そこに2列分表示させ2列分表示させたセルにリンクするだけです。

作業セルをSheet2のA1:C10としました。

Sheet2の各セルに下記関数を2列表示と言う事ですが、先に書いたように2列を表示する事は出来ないので、2列分表示できればいいと言う事にしました。
作業セルを使って、そこに2列分表示させ2列分表示させたセルにリンクするだけです。

作業セルをSheet2のA1:C10としました。

Sheet2の各セルに下記関数を入れ、10行目までフィル。
このセルを入力規則のリストにリンクさせます。

A1
=Sheet1!C1 & " " & Sheet1!D1

B1
=Sheet1!E1 & " " & Sheet1!F1

C1
=Sheet1!G1 & " " & Sheet1!H1

D1
=Sheet1!I1 & " " & Sheet1!J1


Sheet1B1の入力規則の元のデータに書き関数
(UPできるようにと適当な位置で改行しました直して使ってね)

=IF(A1="","",IF(A1=1,INDIRECT("Sheet2!A1:A10"),
IF(A1=2,INDIRECT("Sheet2!B1:B10"),IF(A1=3,
INDIRECT("Sheet2!C1:C10"),IF(A1=4,
INDIRECT("Sheet2!D1:D10"),"")))))

【21683】Re:条件付リストのような物は作成できま...
回答  kobasan  - 05/1/26(水) 18:07 -

引用なし
パスワード
   ▼まつ さん今晩は
>B1セルをクリックしたときにリストをプルダウン等で表示し、
>選択することができますか?

こんなことかな?
前回のVBAに追加して下さい。

'リストをdown表示
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = Range("B1").Address Then SendKeys "%{down}"
End Sub

【21700】Re:条件付リストのような物は作成できま...
発言  ぴかる  - 05/1/27(木) 14:53 -

引用なし
パスワード
   ▼まつ さん:
私を含め、いろんな方から回答が出ています。結果の方もどうなったかご報告下さいね。
よろしくお願いします。

【22329】Re:条件付リストのような物は作成できま...
お礼  まつ  - 05/2/16(水) 14:05 -

引用なし
パスワード
   ▼ぴかる さん:
>▼まつ さん:
>私を含め、いろんな方から回答が出ています。結果の方もどうなったかご報告下さいね。
>よろしくお願いします。

▼ぴかる さん:
 お礼遅くなりまして申し訳ありませんでした。
 まだ、勉強不足でうまくいきません。少し勉強してみます。
 回答ありがとうございました。

【22330】Re:条件付リストのような物は作成できま...
お礼  まつ  - 05/2/16(水) 14:06 -

引用なし
パスワード
   ▼Jaka さん:
>こんにちは。
>
>2列表示と言う事ですが、先に書いたように2列を表示する事は出来ないので、2列分表示できればいいと言う事にしました。
>作業セルを使って、そこに2列分表示させ2列分表示させたセルにリンクするだけです。
>
>作業セルをSheet2のA1:C10としました。
>
>Sheet2の各セルに下記関数を2列表示と言う事ですが、先に書いたように2列を表示する事は出来ないので、2列分表示できればいいと言う事にしました。
>作業セルを使って、そこに2列分表示させ2列分表示させたセルにリンクするだけです。
>
>作業セルをSheet2のA1:C10としました。
>
>Sheet2の各セルに下記関数を入れ、10行目までフィル。
>このセルを入力規則のリストにリンクさせます。
>
>A1
>=Sheet1!C1 & " " & Sheet1!D1
>
>B1
>=Sheet1!E1 & " " & Sheet1!F1
>
>C1
>=Sheet1!G1 & " " & Sheet1!H1
>
>D1
>=Sheet1!I1 & " " & Sheet1!J1
>
>
>Sheet1B1の入力規則の元のデータに書き関数
>(UPできるようにと適当な位置で改行しました直して使ってね)
>
>=IF(A1="","",IF(A1=1,INDIRECT("Sheet2!A1:A10"),
>IF(A1=2,INDIRECT("Sheet2!B1:B10"),IF(A1=3,
>INDIRECT("Sheet2!C1:C10"),IF(A1=4,
>INDIRECT("Sheet2!D1:D10"),"")))))

▼Jaka さん:
 回答ありがとうございました。
 お礼が遅くなりまして申し訳ありませんでした。
 もう少し勉強してみます。

【22331】Re:条件付リストのような物は作成できま...
お礼  まつ  - 05/2/16(水) 14:08 -

引用なし
パスワード
   ▼kobasan さん:
>▼まつ さん今晩は
>>B1セルをクリックしたときにリストをプルダウン等で表示し、
>>選択することができますか?
>
>こんなことかな?
>前回のVBAに追加して下さい。
>
>'リストをdown表示
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>  If Target.Address = Range("B1").Address Then SendKeys "%{down}"
>End Sub

▼kobasan さん:
 回答ありがとうございました。
 勉強不足でうまくいきませんが、もう少し自分で勉強してみます。
 御礼が遅くなりまして申し訳ありませんでした。

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