- ベストアンサー
マクロで表作成の設定で困っています
- マクロを使用して表作成の設定について困っています。セルを折りたたむために空白セルを認識する方法を知りたいです。
- 表作成をしている際に、入力する毎に数値が変わるため、セルを折りたたむための設定方法がわかりません。
- セルを表示しない設定を使用して、マクロで空白セルを認識してセルを折りたたむことができるのか知りたいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
たいへん申し訳ありません。 こちらではA1からデータを入れたもので テストしていたため、気づきませんでした。 訂正させていただきます。 Sub 空白非表示2() r = 6 c = 3 last = Cells(r, c).CurrentRegion.Rows.Count For i = r To last + r If Cells(i, c + 1) = "" Then Rows(i).RowHeight = 0 End If Next i End Sub
その他の回答 (5)
- 0shiete
- ベストアンサー率30% (148/492)
#4が十分でないので補足です。すみませんm(__)m C D 5名前 単価 6山田 11 7田中 10 8広瀬 となっていると想定しています。この場合で、c=3,r=6なのですが、、、 あと、名前の列に途中、空欄があると、空欄の前までしか動作しません。
補足
度々すいません。 C D E F 5 名前 個数 単価 合計 6 山田 7 田中 8 広瀬 9 山本 10 木村 11 高野 12 合計 という表で Sub 空白非表示() r = 6 c = 3 last = Cells(r, c).CurrentRegion.Rows.Count For i = r To last If Cells(i, c + 1) = "" Then Rows(i).RowHeight = 0 End If Next i End Sub と設定してマクロを開始すると C D E F 5 名前 個数 単価 合計 9 山本 10 木村 11 高野 12 合計 と6・7・8の行しか折りたたんでくれません 8行目までしか認識していない様なのですが
- 0shiete
- ベストアンサー率30% (148/492)
>C=は名前の入っている列が左から何列目にあるか示せばいいのですよね >表の範囲がC6:Y226だとするとC=3となりますよね そうです。cはcolumnのcです。A,B,Cですから3番目(c=3)です。 rはrowのrです。c6には「山田」が入っていると想定しています。 「名前」が入っているセルではありません。もし、c6に「名前」が 入っているなら、r=7としてください。 これ以外にプログラムを書き換えるところはありません。 また、こちらで試して、うまくいっているので、 間違っていないと思います。 それでも、うまくいかない場合には、どのようにうまくいかないのか、 補足をお願い致します。
- zonoyan
- ベストアンサー率25% (2/8)
No.2です。 誤りがありました。 修正します。 For 行 = 2 To 最終行 ↓ For 行 = 行 + 1 To 最終行 それから 変数 "行" ダブって存在してますので、気になるなら変更してください。 このままでも動きます。
- zonoyan
- ベストアンサー率25% (2/8)
No1の方とほぼ同じになってしまいましたが、参考までに。 行 = 1 '表の最初の行 列 = 1 '表の最初の列 最終行 = Worksheets("Sheet1").Cells(行, 列).End(xlDown).Row For 行 = 2 To 最終行 If Worksheets("Sheet1").Cells(行, 列 + 1) = "" Then Worksheets("Sheet1").Rows(行).Hidden = True '元にも戻すマクロを作成の際は"True"→"False"にする End If Next 行
- 0shiete
- ベストアンサー率30% (148/492)
以下のマクロを標準モジュールにコピーしてください。 うまくいかなければ、補足ください。 Sub 空白非表示() r = 1'データの入っている最初の行、つまり、タイトル行をとばした行 c = 1'名前のデータの入っている列 last = Cells(r, c).CurrentRegion.Rows.Count For i = r To last If Cells(i, c + 1) = "" Then Rows(i).RowHeight = 0 End If Next i End Sub
補足
>c = 1'名前のデータの入っている列 C=は名前の入っている列が左から何列目にあるか示せばいいのですよね?(違ってますか?) >r = 1'データの入っている最初の行、つまり、タイトル行をとばした行 r=がわからないのです。 表の範囲がC6:Y226だとするとC=3となりますよね r=6だと解釈したのですがうまく行きません それとも範囲指定をするのでしょうか
お礼
ありがとうございます。完成しました。 作っているうちに計算式が入っているセルの「0」の箇所を折りたたむ事にしました If Cells(i, c + 3) = 0 Then と入力ました