- ベストアンサー
エクセルVBA
エクセルVBAで、列の非表示をさせるためにはどうしたら良いでしょうか? また、別の質問になりますが、エクセルVBAで出した 結果をACCESSのレポート等で印刷させることって出切るんでしょうか? 前者はどうにかお知恵を借りてできるようにしたいです。後者はもし出来なければかまいません。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
前者は、これこそマクロの記録で判るではないですか。 書式-列-表示しない,の操作をします。 Columns("C:C").Select Selection.EntireColumn.Hidden = True と出ます。 後者はCSVファイル等をエクスポートして、アクセスで印刷すれば良いと思いますが、エクセルの方が表として ビジネス的に見栄えが良いものが作れるのではないでしょうか。VBAで、逆方向の質問は見たことがありますが、本件はなぜ?。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>単票形式で印刷させようとして A4、B5に1枚やそれらの上下2つ、3つ切りで良いなら経験あります。左右も分割可能ですが。 あとカッターで上下に切る人手作業も面倒ですが。 印刷はRange("A1:H40").Printoutと1行で済みます。 その前にマクロの記録を取って、「ページ設定」(引いては「印刷」)の操作をして、そのVBAコードを知り、コード各行がどう言う意味か(何を左右するか)調べ知識を仕入れます。そして Range("A1:H40").Printoutの前に入れます。 A1:H40は印刷すべきシートの範囲です。内容により 決まります。 印刷に入る前に、VBAで各セルにデータをセットします(代入)。別シートからも可能でそのやり方を仕入れてください。 (1)枠罫線・見だし作り。行高列幅調節。色指定 など手作業で行う。 (2)VBAで指定セルに、データ設定のコードを作る (3)VBAで上記印刷コードを作る。 (4)各レコードごとに、内容が変るセルを内容をクリア (5)実行では(2)-(4)をレコード数だけ繰り返す。 (6)(2)で、場合によりVBAで印刷レコードを選別 (7)上下2レコード分盛る場合は2レコード分データを シートにセットして、1回VBA印刷コードを実行。その 繰り返し。
お礼
アドバイスありがとうございました!! 大変参考になりました。 今後もこのようなやり方でVBAの知識を仕入れて上達できるように頑張りたいと思います。
- ki-aaa
- ベストアンサー率49% (105/213)
表示と非表示がひとつのマクロです。 表示されていれば、非表示になり、 非表示の場合は、表示になります。 Sub 表示() ActiveSheet.Unprotect With Columns("Q:IU") .Hidden = Not .Hidden End With ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
非表示ではありませんが、列幅を0にする方法です。 単列は、 Worksheets("sheet1").Columns("A").ColumnWidth = 0 複数列は、 Worksheets("sheet1").Columns("A:F").ColumnWidth = 0 再表示は、例えば、0 を 5 にすると列幅=5で表示します。 ACCESSのレポートは出来ると思いますが、やった事がありませんけど、ややこしいですよ、エクセルの方が綺麗に出来ると思うけどなぁ~
補足
私もエクセルでやろうとしたのですが、単票形式で印刷させようとして知識が無くて挫折したので、面倒なやり方で行こうと思ったのです。 何か良いアドバイスありますか? もうちょっとVBAの勉強してみたいと思います。