おはようございます。
VBA初心者です。どうぞお力添えをお願いいたします。
office2003を使用しております。
Excelの表にて会社での物品の集計表を作っております。
A列に部署
B列に物品名
C~E列まで発注元・発注先などが記載
Fから右方向へ週一回ずつ発注数(列)が増えていきます。
A1、B1、C1・・・は見出しで、F1には集計した日付が入力されます。
マクロを使用し、各部門毎の注文書からVLOOKUP等で自動的にデータを集計し、F列に挿入していくという形を取っております。過去分はGHIJKと右方向へ移動していきます。
定期的に「過去のある月の注文状況」を確認したいときがあります。
現在は12月ですが、「8月の総務課の注文状況は?」といったときに、列数が多く、非常に煩雑です。
そこで、コンボボックスを設置し、1月~12月まで選択できるようにし、それを選んだ(もしくはボタン操作でも構いません)とき、F列以降のその月の列だけを表示したいと考えております。
どうか宜しくお願いいたします。
A B C~E F G H
部署 品目 12/2 11/28 11/21
総務 ボールペン ・・・ 0 12 5
総務 修正テープ ・・・ 22 0 0
総務
・
・
・
経理 ノート 10 0 12
経理 えんぴつ 1 12 0
・
・
・
No.1ベストアンサー
- 回答日時:
何行分あるのか良くわかりませんが、たくさんあってかつ可変ということなのですよね?
G列以降の列(特に列のタイトル)は、人為的に変更されることはないものと仮定してよければ、以下の要領で・・・
(1)シートに直接コンボボックスを作成します。
(オブジェクト名が「ComboBox1」であることを確認してください。)
コンボボックスにはセルのリンクを張らないでおくこと。
(ユーザーフォームだと、複雑で、ここに記載するのが面倒になるので、
直接のボックスにしました。)
(2)対象とするシートのシートモジュールに以下をコピー
(3)以上で、ボックスから選択したタイトルの行が、ウインドウの最左列に
表示されるようになります。
表示位置の調節や、その他は適宜アレンジしてください。
Private Sub ComboBox1_Change()
Dim col As Integer
col = ComboBox1.ListIndex + 6
If col < 6 Then Exit Sub
ActiveWindow.SmallScroll toright:=col - ActiveWindow.VisibleRange.Column
End Sub
Private Sub ComboBox1_DropButtonClick()
Dim dt() As String
Dim i As Integer, col As Integer
col = Cells(1, Columns.Count).End(xlToLeft).Column
If col - 5 = ComboBox1.ListCount Then Exit Sub
If col > 4 Then ReDim dt(0 To col - 6)
For i = 6 To col
dt(i - 6) = Cells(1, i).Text
Next i
ComboBox1.ColumnCount = 1
ComboBox1.List() = dt
ComboBox1.Style = fmStyleDropDownList
End Sub
回答ありがとうございます。
とりあえずコピーしてやってみました。
確かに希望の列が一番左に来ますが・・・。
すいません、私の質問が悪かったと思います。
まず、物品の名称等は隠さず(スクロールもせず)表示した状態であること、
希望の列(希望の月)のみを表示させ、それ以外は非表示にすること、
が希望でした。
今回の件は自分で何とか出来ました。
日付から月だけ取得して、それとコンボボックスの値を照らし合わせ、一列ずつループを使用して表示・非表示を選択する形を取りました。
ご検討いただきました皆様どうもありがとうございました。
fujillin様
非常に貴重なアドバイス・コードありがとうございました。
これからも参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) 【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。 3 2023/03/23 17:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel元に戻す方法を教えてくだ...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
「B列が日曜の場合」C列に/...
-
エクセルで最初のスペースまで...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
2つのエクセルのデータを同じよ...
-
エクセル 文字数 多い順 並...
-
文字列に数字を含むセルを調べたい
-
エクセルで文字が混じった数字...
-
エクセルの並び変えで、空白セ...
-
エクセル(勝手に太字になる)
-
Excelで半角の文字を含むセルを...
-
エクセルの表から正の数、負の...
-
Excel、市から登録している住所...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 同じ値を探して隣の...
-
オートフィルターをかけ、#N/A...
-
EXCELで 一桁の数値を二桁に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセルで、列の空欄に隣の列...
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
文字列に数字を含むセルを調べたい
-
50人を数回、グループ分けする...
おすすめ情報