
ExcelでIF関数で他のシートのあるセルが未入力ならnullを返すようになっているのですが、
マクロでそのセルがnullであれば、その行を非表示にし、印刷し終わったら再度表示したいのですが、
どのようにすれば可能でしょうか?以下ではセルに式が入っているため、""(null)状態では空白と
判断されず、行が非表示になりません。どなたかご教示お願い致します。
Range("E15:E50").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Hidden = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Range("E15:E50").Select
Selection.EntireRow.Hidden = False
No.3ベストアンサー
- 回答日時:
記録マクロを使っているようですので#1の処理を少しだけ説明します
コードの内容から想像せず 少し判り難い回答をしたかもしれません
Null と言う事でしたが
If IsNull(r) Or Not r <> "" Then は
If r = "" Then で良いかな・・・と思います
下記は所謂VBAです 変数 繰り返し処理を使っています
Dim r As Range
Dim hdnRow As Range
変数宣言 変数(入れ物)を使っています
For Each r In Range("E15:E50")
範囲内を順繰り処理をします 処理する r は入れ物で範囲内の当該セル
If r = "" Then セルが "" なら (空白を含む)
If hdnRow Is Nothing Then
変数hdnRowが空ならば
Set hdnRow = r
hdnRowに1セルを入れる
Else 変数hdnRowが空でなければ (not変数hdnRowが空ならば)
Set hdnRow = Union(hdnRow, r)
hdnRowに追加で入れる
End If 変数hdnRowが空ならば 終わり
End If セルが "" なら 終わり
Next 次のセルへ (範囲が終わるまで繰り返し)
If Not hdnRow Is Nothing Then hdnRowが空でなければ
hdnRow.EntireRow.Hidden = True
hdnRow(セル群)を含む行を非表示にする
'PrintOutメイン処理
hdnRow.EntireRow.Hidden = False
戻す
End If hdnRowが空でなければの処理終了
行や列、セルを操作する場合、出来るだけ纏めて行うのが理想です
また、元に戻す必要がある事からUnionメソッドを使いました
少し判り難くなってしまったかと思います
メイン処理は印刷なので
記録マクロではフィルタを使えば記録できるような気がします
Range("E15:H50").Select
Selection.AutoFilter
ActiveSheet.Range("$E$15:$E$50").AutoFilter Field:=1, Criteria1:="<>"
’メイン
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
・
・
今まで結果だけ得られればいいと言うスタンスで記録マクロしか使っていませんでしたが、ご丁寧な分かり易い説明ありがとうございました。
No.2
- 回答日時:
こんにちは
直接関係ありませんけれど、nullと空文字は異なるものです。
(同一の意味の言語もあるでしょうけれど)
TstVar = ""
MsgBox IsNull(TestVar) ' False
SpecialCells(xlCellTypeBlanks)は何の入力もされていない空白セルを意味しますので、関数式のあるセルは対象になりません。
値が空文字ということを判定したければ、値をチェックすれば良いでしょう。
簡単にやるなら
For Each c In Range("E15:E50")
If c.Value = "" Then c.EntireRow.Hidden = True
Next c
フィルターを利用するとか、まとめて非表示にするとかいろいろありそうですけれど・・・
No.1
- 回答日時:
こんにちは
Null と言うより長さ0の文字と言う事でしょうか・・
1ずつループで見つける一例です
Dim r As Range
Dim hdnRow As Range
For Each r In Range("E15:E50")
If IsNull(r) Or Not r <> "" Then
If hdnRow Is Nothing Then
Set hdnRow = r
Else
Set hdnRow = Union(hdnRow, r)
End If
End If
Next
If Not hdnRow Is Nothing Then
hdnRow.EntireRow.Hidden = True
'PrintOut
hdnRow.EntireRow.Hidden = False
End If
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで、結合されたセルに連続...
-
excelでSUBTOTAL関数を設定した...
-
エクセル ボタンを押すとセルの...
-
セルを結合した場合の関数(COU...
-
エクセルでチェックボックスを...
-
Excel 離れたセルへの連続デー...
-
エクセルで片方のセルに入力し...
-
Excelでnullになるような式のセ...
-
エクセルでたくさんのセルを小...
-
VBAで結合したセルがクリアでき...
-
【EXCEL】条件に合致するセルの...
-
Excel セルを結合したものを抽...
-
EXCEL VBAでたくさんのURLの一...
-
セル内の一部に別セルを差し込む
-
エクセルでセルをクリックして“...
-
Excel2007 セルの削除について
-
Excelのカウントアップボタンに...
-
EXCEL セル結合したセルを参照...
-
エクセル 結合セル内に空白なら...
-
エクセルで作業した日の日付を残す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelでSUBTOTAL関数を設定した...
-
EXCELで、結合されたセルに連続...
-
エクセル ボタンを押すとセルの...
-
エクセルでチェックボックスを...
-
セルを結合した場合の関数(COU...
-
エクセルで片方のセルに入力し...
-
Excel 離れたセルへの連続デー...
-
VBAで結合したセルがクリアでき...
-
Excelでnullになるような式のセ...
-
セルの値を取得してSQL文に組み...
-
Excel セルを結合したものを抽...
-
エクセルでたくさんのセルを小...
-
エクセルでセルをクリックして“...
-
エクセル 結合セル内に空白なら...
-
【EXCEL】条件に合致するセルの...
-
Excelのカウントアップボタンに...
-
VBAで困っています。
-
エクセルで作業した日の日付を残す
-
EXCEL VLOOKUP的コメント自動表示
-
EXCEL セル結合したセルを参照...
おすすめ情報