Excel VBA質問箱 IV

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

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


7722 / 76734 ←次へ | 前へ→

【74597】Re:ある列で同じデータがあったらその別の列のデータを取り出す
発言  kanabun  - 13/8/1(木) 22:01 -

引用なし
パスワード
   ▼たえりか さん:
>▼kanabun さん:
>早速のご回答ありがとうございました。
>確かに教えていただいたとおりにしたら質問したことができました!
>
>教えていただいたコードでマクロを実行するとE2には"リンゴ"と入力されます。
>たとえばE2を入力規則でドロップダウンリストにして、"リンゴ"から"みかん"あるいは"バナナ"に変えたとき、F列とG列も変わるようにできないでしょうか?

そのばあいは、マクロを標準モジュールにではなく、
対象ワークシートモジュールに書きます。
[E2] に {リンゴ,みかん,バナナ} の入力規則を設定しておき、

そのシートのモジュールに こんな感じです。

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address(0, 0) <> "E2" Then Exit Sub
  
  Application.EnableEvents = False '-----------(1)
  Range("B1:C1").Copy Range("F1")  '-----------(2)
  Range("A1").CurrentRegion.AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Range("E1:E2"), _
    CopyToRange:=Range("F1:G1")      '------- (3)
  Application.EnableEvents = True      '------- (4)

End Sub

(1) セルを書き換えますので、Changeイベントがまた起きます。
  そうすると また Worksheet_Change イベントが起き、イベントの
  連鎖が発生し、困ったことになりますので、これ以後、セルを書き換えても
  Changeイベントは発生しなかったことにします。
(2) [B1:C1]の列見出しを [[F1:G1](出力列)にコピーします。
  [C1] が「数量」なら、[G1]も「数量」に変わります。
(3) フィルタオプションを実行します。
   条件範囲[E1:E2]
   抽出先 [F1:G1]
(4) 抽出転記が終われば、次のセル変化に対応するために、
  EnableEventsプロパティを 「有効」に戻しておきます。


>また、少し話がそれて恐縮ですがC列がコードではなく、個数などの数値データだとして、
>G列を基準として降順でF列とG列が自動で並べ替えられて表示される方法がありますでしょうか?
そうするには、さっきのコードの (3) のあとに 追加します。

  Application.EnableEvents = False
  Range("B1:C1").Copy Range("F1")
  Range("A1").CurrentRegion.AdvancedFilter _
     Action:=xlFilterCopy, _
     CriteriaRange:=Range("E1:E2"), _
     CopyToRange:=Range("F1:G1")
  '------------------------------------------------------- ここから
  Dim r As Range
  Set r = Range("F1", Cells(Rows.Count, "F").End(xlUp)) _
      .Resize(, 2)
  If r.Rows.Count > 2 Then
    r.Sort Key1:=r.Columns(2), Header:=xlYes
  End If
  '------------------------------------------------------- ここまで  
  Application.EnableEvents = True
10 hits

【74591】ある列で同じデータがあったらその別の列のデータを取り出す たえりか 13/8/1(木) 16:02 質問
【74592】Re:ある列で同じデータがあったらその別の... kanabun 13/8/1(木) 17:29 発言
【74595】Re:ある列で同じデータがあったらその別の... たえりか 13/8/1(木) 21:25 質問
【74597】Re:ある列で同じデータがあったらその別の... kanabun 13/8/1(木) 22:01 発言
【74599】Re:ある列で同じデータがあったらその別の... たえりか 13/8/2(金) 10:17 質問
【74600】Re:ある列で同じデータがあったらその別の... kanabun 13/8/2(金) 11:15 発言
【74601】Re:ある列で同じデータがあったらその別の... kanabun 13/8/2(金) 11:32 発言
【74621】Re:ある列で同じデータがあったらその別の... たえりか 13/8/9(金) 12:45 お礼
【74622】Re:ある列で同じデータがあったらその別の... kanabun 13/8/9(金) 14:49 発言

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