
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
こんばんは、#3です。
表題のご質問とは、違うご質問のようですね。
2つの表は、同じようでは無いと思いますし、①②共に表組みが不明なので、何とも言えませんが、列方向だけでなく行方向の条件や処理が必要になると思います。
よく解りませんが、列や行を非表示にすると言う考え方でなく、必要な(該当する)データを他のシート(印刷用フォーマット)に書き出すような手順が良いのではないかと思います
検索ワードが〇でなければ、私は回答していないと思いますので、後は諸先輩の回答をお待ちください。。。
No.4
- 回答日時:
>シート1で〇と入っている列だけを、シート2で表示させたいです。
シート2に直接〇を付けることは出来ないのでしょうか?
例えば、シート2の1行目に〇を付けて、その行を非表示にしておくとか・・・。
それから、○でなければいけない理由ってありますか。
その辺、自由に設計できるのであれば、プログラムは簡単にできます。
こんな感じです(1行目が空白の列を非表示にしています)。
Sub Macro1()
Rows("1:1").SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True
End Sub
No.3
- 回答日時:
こんにちは
>A1 B1 C1
>シート1で〇と入っている列だけを、シート2で表示させたいです。
すでに回答がありますが補足の意味を含め、横から失礼します。
続けて使われる事もあるでしょうから、先に対象列全てを非表示にして、
〇の有無を(Sheets("Sheet1")で)検証する、〇のある列を表示すると言う考え方です
少し分かり難いかも知れませんが、col As Rangeは行、列、セルやセル範囲(レンジ)のオブジェクト変数でUnionでつなげる事が出来ます。
Rangeの表示、非表示、挿入や削除などは可能であれば、纏めて(特に範囲が広い場合など)処理するのが良いので col.EntireColumn.Hidden = False で纏めて処理しています。(変数名は任意です)
(今回不要とも考えられますが、よくある処理なので一応採用)
デバッグ用サンプルです。
Sub sample()
Const strWord As String = "〇"
Dim i As Long, col As Range
With Sheets("Sheet2")
.Columns("A:C").Hidden = True
For i = 1 To 3
If Sheets("Sheet1").Cells(1, i) = strWord Then
If col Is Nothing Then
Set col = .Cells(1, i)
Else
Set col = Union(col, .Cells(1, i))
End If
End If
Next
End With
If Not col Is Nothing Then col.EntireColumn.Hidden = False
End Sub
デバッグ時 重要な事
ご質問の例で挙げられている 〇 は漢数字や記号などあり、表示と一致しない場合があります。(添付図)
Const strWord As String = "〇" の 〇部分は、実際に使用しているセルの値をコピーしてペーストしてください。
どちらでも対応する場合は、条件分岐処理時にORで条件を加える必要があるかも知れません。
不明な点は補足してください。

No.2
- 回答日時:
以下のマクロを標準モジュールに登録してください。
シート1のシート名は、Sheet1
シート2のシート名は、Sheet2
にしてあります。あなたのほうで、適切に変えてください。
Public Sub 表示列設定()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxcol As Long
Dim wcol As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
maxcol = sh1.Cells(1, Columns.Count).End(xlToLeft).Column '1行目の最終列を求める
For wcol = 1 To maxcol
If sh1.Cells(1, wcol).Value = "○" Then
sh2.Columns(wcol).EntireColumn.Hidden = False
Else
sh2.Columns(wcol).EntireColumn.Hidden = True
End If
Next
MsgBox ("完了")
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
Excelマクロのエラーを解決した...
-
同じ作業を複数のシートに実行...
-
VBA 検索して一致したセル...
-
シートが保護されている状態で...
-
VBAで指定シート以外の選択
-
実行時エラー1004「Select メソ...
-
excelのマクロで該当処理できな...
-
別のシートから値を取得するとき
-
【Excel VBA】Worksheets().Act...
-
Excel チェックボックスにチェ...
-
XL:BeforeDoubleClickが動かない
-
【VBA】シート名に特定文字が入...
-
ExcelのVBAのマクロで他のシー...
-
IFステートの中にWithステート...
-
シート名でファイル検索する
-
ユーザーフォームに入力したデ...
-
ExcelのVBAを使い、複数シート...
-
エクセルの絶対参照の一括操作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
エクセルで通し番号を入れてチ...
-
VBA 検索して一致したセル...
-
XL:BeforeDoubleClickが動かない
-
VBA 指定した回数分、別シート...
-
VBAマクロでシートコピーした新...
-
シートが保護されている状態で...
-
ブック名、シート名を他のモジ...
-
【VBA】全ての複数シートから指...
-
別のシートから値を取得するとき
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
おすすめ情報
例えば
シート1のA1 B1 C1に〇を入れるセルがあったとして
B1に〇と入ってる場合
シート2のA1とC1の列は非表示にしたいのです。
列を非表示にするコードは分かるのですが、
〇がC1だけに入る時もあれば、A1とB1に入る時もあるので
流動的に変わる時どうしたらいいのか分からず…
中途半端に例えで伝えたのが悪かったのかもしれないです。
厳密に言うと
sheet1に1日〜31日までのシフト表があり【画像内①】
その他に1日につき1sheet表があり、それが31日分あります。
昼の時間帯は白い表、夜の時間帯はグレーアウトしてあり
例えばsheet1でAさんが3/1に休みだと3/1のAさんの昼の時間帯がグレーアウトし、ロングとは言っていると夜の時間帯が白くなり、夜の時間帯にAさんがいることがわかるようにしているのです。【画像内②】
データを印刷する時に、ボタンひとつで
夜の時間帯にいる人だけの表示させたかったので
sheet1に指定の言葉が入っていない人の列を非表示にしたいと言う質問の仕方をしました。
ベースになるコードだけ教えていただいて、あとは自分で変えたらいいかなと思ったので…。