Excel VBA質問箱 IV

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

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


3663 / 13644 ツリー ←次へ | 前へ→

【60834】カウンターとVBA出力について kikan 09/3/17(火) 16:05 質問[未読]
【60835】Re:カウンターとVBA出力について kanabun 09/3/17(火) 16:17 発言[未読]
【60851】Re:カウンターとVBA出力について kikan 09/3/18(水) 10:44 質問[未読]
【60854】Re:カウンターとVBA出力について kanabun 09/3/18(水) 12:37 発言[未読]
【60858】Re:カウンターとVBA出力について kikan 09/3/18(水) 14:26 質問[未読]
【60865】Re:カウンターとVBA出力について kanabun 09/3/18(水) 20:18 発言[未読]
【60866】Re:カウンターとVBA出力について kanabun 09/3/18(水) 20:39 発言[未読]

【60834】カウンターとVBA出力について
質問  kikan  - 09/3/17(火) 16:05 -

引用なし
パスワード
   カウンターとVBA出力についてお願いします。
ツールの流れですが、アクセスDBからエクセルVBAツールで情報を取得します。
この時、DATAと言うワークシートに貼り付けます。この後に各検索後、
WAREAと言うワークシートに検索後のデータを貼り付けます。
ここで質問ですが。
1:WAREAのVBA出力方法

2:テキストボックスにカウンターを表示
  (検索後、カテゴリー別にA:○○件)と言った具合に表示させたいのですが、
  カテゴリーは全部で8種類で8行目にカテゴリーはあります。

よろしくお願いいたします。

【60835】Re:カウンターとVBA出力について
発言  kanabun  - 09/3/17(火) 16:17 -

引用なし
パスワード
   ▼kikan さん:
>ツールの流れですが、アクセスDBからエクセルVBAツールで情報を取得します。
>この時、DATAと言うワークシートに貼り付けます。この後に各検索後、
>WAREAと言うワークシートに検索後のデータを貼り付けます。
>ここで質問ですが。
>1:WAREAのVBA出力方法
どういう意味か、すこし追加説明が欲しい気がします。
前スレでは↓
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=60812;id=excel
「DATA」シートに落としたデータに対してAutoFilterをかけて、
「WAREA」というシートに抽出させていましたが、
ご質問は この「WAREA」に抽出出力されたデータをさらにどこかに
出力したいということですか?
それとも??


>2:テキストボックスにカウンターを表示
>  (検索後、カテゴリー別にA:○○件)と言った具合に表示させたいのですが、
AutoFilterで何行抽出されたかが分かればいいのですか?
それとも?

>  カテゴリーは全部で8種類で8行目にカテゴリーはあります。
カテゴリーとは何のことですか?
それは どのシートの8行目にあるのですか?

【60851】Re:カウンターとVBA出力について
質問  kikan  - 09/3/18(水) 10:44 -

引用なし
パスワード
   ▼kanabun さん:
説明不足ですませんです。
改めて、AutoFilterした後の話になります。
具体的には
(ワークシート:DATA)ここで各検索後、(ワークシートWAREA)にコピーして
 下の配列はコピー後の(ワークシートWAREA)になります。
 A   B    C    D  E   F  G   H  I
 1   担当者 2009/02/01 データ1 データ2 データ3 データ4 種類1 データ5 
 2   担当者 2009/02/12 データ1 データ2 データ3 データ4 種類1 データ5 
 3   担当者 2009/02/15 データ1 データ2 データ3 データ4 種類2 データ5 
 4   担当者 2009/03/01 データ1 データ2 データ3 データ4 種類3 データ5 
 5   担当者 2009/03/02 データ1 データ2 データ3 データ4 種類4 データ5 
 6   担当者 2009/03/04 データ1 データ2 データ3 データ4 種類4 データ5 
 7   担当者 2009/03/07 データ1 データ2 データ3 データ4 種類8 データ5 
                ・
                ・   
                ・
                ・
の様になってまして H列に種類1〜8までの種類があります。
ここでラベルに
      ”種類1:2件”
      ”種類2:1件”
      ”種類3:1件”
      ”種類4:2件”
      ”種類5:0件”
      ”種類6:0件”
      ”種類7:0件”
      ”種類8:1件”
 と言った具合に表示させたいのですが・・?
よろしくおねがいします。

また、(ワークシートWAREA)後のデータをCSV出力したいのですがどうすればいいでしょうか
よろしくお願いいたします。

【60854】Re:カウンターとVBA出力について
発言  kanabun  - 09/3/18(水) 12:37 -

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

>改めて、AutoFilterした後の話になります。
>具体的には
>(ワークシートWAREA)にコピーして
> 下の配列はコピー後の(ワークシートWAREA)になります。
>                ・
>の様になってまして H列に種類1〜8までの種類があります。
>ここでラベルに
>      ”種類1:2件”
>      ”種類2:1件”
>      ”種類3:1件”
>      ”種類4:2件”
>      ”種類5:0件”
>      ”種類6:0件”
>      ”種類7:0件”
>      ”種類8:1件”
> と言った具合に表示させたいのですが・・?

種類があらかじめ分かっているなら、ワークシート関数のCountIf を
使ったらいかがですか?

 MsgBox WorksheetFunction.CountIf(H列データ範囲,"種類1")


>また、(ワークシートWAREA)後のデータをCSV出力したいのですがどうすればいいでしょうか
「WAREA」シートを[編集]メニュー -[シートの移動またはコピー]を使って
あたらしいBookにCopyして、そのBookを (CSV形式で)[名前をつけて保存]する
するまでの操作をマクロ記録してください。

【60858】Re:カウンターとVBA出力について
質問  kikan  - 09/3/18(水) 14:26 -

引用なし
パスワード
   ▼kanabun さん:
ありがとうございます。
CountIf関数ですが、具体的にどの様な構文を書けばよろしいでしょうか?
コマンドボタン1押して種類1をラベル1に○○個ちお表示させる構文を
教えてください。よろしくお願いします。


>▼kikan さん:
>
>>改めて、AutoFilterした後の話になります。
>>具体的には
>>(ワークシートWAREA)にコピーして
>> 下の配列はコピー後の(ワークシートWAREA)になります。
>>                ・
>>の様になってまして H列に種類1〜8までの種類があります。
>>ここでラベルに
>>      ”種類1:2件”
>>      ”種類2:1件”
>>      ”種類3:1件”
>>      ”種類4:2件”
>>      ”種類5:0件”
>>      ”種類6:0件”
>>      ”種類7:0件”
>>      ”種類8:1件”
>> と言った具合に表示させたいのですが・・?
>
>種類があらかじめ分かっているなら、ワークシート関数のCountIf を
>使ったらいかがですか?
>
> MsgBox WorksheetFunction.CountIf(H列データ範囲,"種類1")
>
>
>>また、(ワークシートWAREA)後のデータをCSV出力したいのですがどうすればいいでしょうか
>「WAREA」シートを[編集]メニュー -[シートの移動またはコピー]を使って
>あたらしいBookにCopyして、そのBookを (CSV形式で)[名前をつけて保存]する
>するまでの操作をマクロ記録してください。

【60865】Re:カウンターとVBA出力について
発言  kanabun  - 09/3/18(水) 20:18 -

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


>>>(ワークシートWAREA)にコピーして
>>> 下の配列はコピー後の(ワークシートWAREA)になります。
>>>                ・
>>>の様になってまして H列に種類1〜8までの種類があります。
>>>ここでラベルに
>>>      ”種類1:2件”
>>>      ”種類2:1件”
>>>      ”種類3:1件”
>>>      ”種類4:2件”
>>>      ”種類5:0件”
>>>      ”種類6:0件”
>>>      ”種類7:0件”
>>>      ”種類8:1件”
>>> と言った具合に表示させたいのですが・・?

>CountIf関数ですが、具体的にどの様な構文を書けばよろしいでしょうか?
>コマンドボタン1押して種類1をラベル1に○○個ちお表示させる構文を
>教えてください。


ラベルというのは どこにあるのでしょうか?

UserForm にあるLabelのことだとして、ステップバイステップで
下のボタン_Click()プロシージャ内に
コードを書いていただけませんか?

'ボタン名は適当に btnCountIf としてあります
Private Sub btnCountIf_Click()

 '(1)AutoFilterで抽出された(ワークシートWAREA)の表範囲を _
   変数r に代入してください
   
   Dim r As Range
   Set r = Worksheets("WAREA").Range("A1").CurrentRegion
   
 '(2) (1)で得られた表範囲から 1行目の列見出し行を削除してください
   
   Set r = Intersect(r, r.Offset(1))
   
   
 '(3) (2)で得られたデータ範囲をそのうちの「H列」だけに _
    限定してください
   
   Set r = r.Columns("H").Cells
   
 '(4)表の下の(G列に) H列をカウントするための(種類名)を _
   行方向に列挙してください
   
   Dim i As Long
   Dim c As Range
   Set c = r.Item(r.Count + 2, 0)
   For i = 1 To 8
     c.Item(i, 1).Value = "種類" & i
   Next
   
 '(5)(4)で書き出した(種類名)のとなり H列 に _
   (3)で得られた範囲を対象に 種類別個数をカウント _
    する数式を一括セットしてください
    r.Item(r.Count + 2, 1).Resize(8).FormulaR1C1 = _
     "=COUNTIF(" & r.Address(, , xlR1C1) & ",RC[-1])"
     
 '(6)(5)でカウントした結果をラベルコントロールにコピー _
   してください。
   
   Set c = c.CurrentRegion '(4)の範囲と(5)の範囲
   For i = 1 To 8
     Controls("Label" & i).Caption = _
        c.Item(i, 1) & " : " & c.Item(i, 2)
   Next
   
 
 '(7) 必要ならば COUNTIFに使った範囲をクリアしておきます。
 
   c.ClearContents
 
 
 '(8)表範囲をCSV出力するには
>「WAREA」シートを[編集]メニュー -[シートの移動またはコピー]を使って
>あたらしいBookにCopyして、そのBookを (CSV形式で)[名前をつけて保存]する
>するまでの操作をマクロ記録してください。

   
End Sub

【60866】Re:カウンターとVBA出力について
発言  kanabun  - 09/3/18(水) 20:39 -

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

>また、(ワークシートWAREA)後のデータをCSV出力したいのですがどうすればいいでしょうか

こちらの過去ログが参考になるかも。
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=58106;id=excel

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