Excel VBA質問箱 IV

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

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


39047 / 76732 ←次へ | 前へ→

【42806】Re:抽出結果を別シートに保存
回答  ハチ  - 06/9/22(金) 14:49 -

引用なし
パスワード
   ▼トホホ さん:

>●抽出キーのあるフィールドは常に○列目とは限りません。
>●また、分類も今回の例の様に毎回LLLとMMMとSSSとは
>限りません。
>↓の様に書いてみたのですが、問題があります。
>1.毎回抽出キーが違うので替わるたびにシート名もマクロの中で
>書き換える必要がある。商品分類の数は数十種類。

キーの位置、分類の文字列も不定となると抽出したいモノは
どこかに羅列(セルでもコード内でもいいですけど)する必要があります。

>2.あらかじめ、商品分類の名前でシートを用意しておくのが手間。

これは、マクロでやれば良いですね。
Sheet名にできない文字列がきたときにどうするのか? とか
今回抽出条件に当てはまってないSheetはどうするのか?(古いデータのまま?) とか
というのは別に考えておく必要があると思います。

>3.下の記述を見ても分かるが、同じような記述を繰り返しているが
>もっとスマートにしたい。

こちらは引数で渡して処理するようにすれば良いです。

mainのところにズラズラと羅列する形になります。

Option Explicit

Sub main()
  抽出 "LLL", 4
  抽出 "MMM", 4
  '・・・・
  '・・・・
End Sub

'分類=分類を文字列で指定。項目=列番号を数字で指定
Private Sub 抽出(分類 As String, 項目 As Integer)
  Dim Org_Sh As Worksheet '元Sheet
  Dim Des_Sh As Worksheet '先Sheet
  '元SheetをSet
  Set Org_Sh = Worksheets("受注DB")
  '先SheetをSet なければ作成。
  On Error Resume Next
    Set Des_Sh = Worksheets(分類)
  On Error GoTo 0
  If Des_Sh Is Nothing Then
    Set Des_Sh = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    Des_Sh.Name = 分類
  Else
    Des_Sh.Cells.Clear
  End If
  'AutoFilterでコピー
  With Org_Sh.Range("A1")
   .AutoFilter Field:=項目, Criteria1:=分類
   .CurrentRegion.SpecialCells(xlVisible).Copy Des_Sh.Range("A1")
   .AutoFilter
  End With
  
  Set Org_Sh = Nothing
  Set Des_Sh = Nothing
End Sub

0 hits

【42805】抽出結果を別シートに保存 トホホ 06/9/22(金) 13:08 質問
【42806】Re:抽出結果を別シートに保存 ハチ 06/9/22(金) 14:49 回答
【42906】Re:抽出結果を別シートに保存 トホホ 06/9/25(月) 10:41 質問
【42907】Re:抽出結果を別シートに保存 ハチ 06/9/25(月) 11:00 発言
【42911】Re:抽出結果を別シートに保存 トホホ 06/9/25(月) 12:30 質問
【42913】Re:抽出結果を別シートに保存 トホホ 06/9/25(月) 12:47 発言
【42916】Re:抽出結果を別シートに保存 ハチ 06/9/25(月) 13:18 発言
【42917】Re:抽出結果を別シートに保存 トホホ 06/9/25(月) 13:25 発言
【42924】Re:抽出結果を別シートに保存 トホホ 06/9/25(月) 14:22 お礼
【42833】Re:抽出結果を別シートに保存 Hirofumi 06/9/23(土) 0:41 回答

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