No.10
- 回答日時:
tabtab9さま
misatoannaさま
こんにちは。
ここのスレッドをお借りして、
>―― こんにち"は" が正しいのでしょうが、つい "わ" を使ってしまいます。
Excel2003のオートコレクトのデフォルト設定に、
「こんにちわ」 → 「こんにちは」
と入っていますね。何か、とってもヘンな感じです。どっちかというと、Excelのよけいなお世話の延長かしら?^^;
>列全体に罫線を設定しておきますと、行を削除しても、最終行は罫線が設定された状態で
>追加されますね。(これは今回気づきました)
そうだったのですね。私は、マクロ中心なので、知りませんでした。何か、活用できそうな気がします。ありがとうございます。
本題に戻ると、最終行を採る方法として、他に考えてみましたが、
With ActiveSheet.UsedRange
.Cells(.Count).Select
End With
'これって、危ないコードで、これは使えませんね。
これも、
ActiveCell.SpecialCells(xlLastCell).Select
何か、データのないところを指していました。
私は、このご質問主のtabtab9さんとは、現在、計11回目の回答を付けていますが、気になって、以前の質問と私の回答を読み直してみました。それで、その内容が見えました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2028046
( http://okwave.jp/kotaeru.php3?q=2028046 )
>説明不足だったのですがQ列は、O列とP列とQ列のセルを結合させています。
というのでは、Q列では採れませんね。この場合は、O列ですね。
#1さんのところで、すでに解答が出ていますが、それをわたし流のマクロで、表現してみました。
'------------------------------------------------------
Sub getLineMaking()
Dim r As Range
Dim AcSht As Worksheet
Set AcSht = ActiveSheet
Application.ScreenUpdating = False
LineArranging AcSht.UsedRange, xlNone '罫線削除
With AcSht.Range("A1").CurrentRegion
.AutoFilter _
Field:=.Columns.Count, _
Criteria1:="<>0"
'Columns.Count は、列数を指定することも可能
Set r = AcSht.AutoFilter.Range
.AutoFilter
'r.Select '←選択範囲
End With
LineArranging r, xlContinuous
Set r = Nothing
Set AcSht = Nothing
Application.ScreenUpdating = True
End Sub
'------------------------------------------------------
Sub LineArranging(ByVal rng As Range, ByVal myStyle As Integer)
'罫線引き/消しサブルーチン
Dim Bds As Variant
Dim i As Variant
'罫線の種類
Bds = Array(7, 8, 9, 10, 11, 12)
For Each i In Bds
With rng.Borders(i)
.LineStyle = myStyle
If myStyle <> xlNone Then
.Weight = xlThin
.ColorIndex = 1 'Black
End If
End With
Next
End Sub
'------------------------------------------------------
果たして、CurrentRegion で良いのかは分かりません。罫線は、確実に消去できるはずですが、罫線を引くほうの確保はされません。A1にデータがあって、Q列まで、連結セルはあっても空いた列がないという条件です。
この最終行の採り方は、とても違和感があって、思い出せませんでした。
今回は、大発見という体験をさせていただきました。
ありがとうございました。
せっかくのマクロですので、動作の確認をさせていただきましたが、処理的には、フィルタを使ったマクロで解決いたしました。
P.S.説明不足でご迷惑をおかけしました。
いろいろあってお礼が遅れて申し訳ありませんでした。
No.9
- 回答日時:
tabtab9さま、Wendy02さま、こんにちわ。
―― こんにち"は" が正しいのでしょうが、つい "わ" を使ってしまいます。
> その範囲をクリアする方法は、シートをそのままの状態からでは、保存 以外に方法が
> ないようです。行の削除すれば、罫線が消えてしまいますから。
列全体に罫線を設定しておきますと、行を削除しても、最終行は罫線が設定された状態で
追加されますね。(これは今回気づきました)
でも、行削除してもデータ最終位置は記憶されていて、やはり保存操作をしないとクリア
されないようです。
マクロの ActiveCell.SpecialCells(xlLastCell).Select みたいですね。
#7 を訂正します。
> 同じように、A~Q列の列全体を選択して罫線(格子)を設定し、次のように名前を定義
> します。(対象シートの名前が "Sheet1" だとして)
と書きましたが、ここは A1:Q67 の範囲だけに罫線を設定すればいいですね。
No.8
- 回答日時:
tabtab9 様
misatoanna 様
こんばんは、Wendy02です。
>その後、セル C30 だけに何か入力してから印刷プレビューしてみてください。
>Excel2000では、罫線は A1:C30 の範囲にしか表示されません。
おっしゃることは、XL2003でも、可能です。確認しました。
そういう現象があることは知りませんでした。
>A1:Q65536(シート最終行)の範囲すべてに罫線を引いてしまいます。
たぶん、行全体、列全体ですと、範囲を認識しなくなるからでしょうね。
その範囲は、マクロのUsedRange とも違う、セルの痕跡のようなものなのですね。
確か、Ctrl+ Shift + End と同じ範囲かな。
その範囲をクリアする方法は、シートをそのままの状態からでは、「保存」以外、方法がないようです。行の削除すれば、罫線が消えてしまいますから。
p.s.
なお、私は、前回の回答は、ご質問を読み違えたようです。罫線を全部無視する、と読んでいましたから。
マクロの場合は、その最終行のとる場所を何にするか、どこにするか、どのようにするか、だけだと思います。暗黙的な取り方よりも、よりはっきりと確実なほうがよいのですが、レイアウトなどの情報が少ないと、お互いの思惑が違い、そのまま解決をみません。(どちらかというと、アタリハズレですね。)
一般的には、左端に日付などが入っているので、以下のようにして範囲を取ります。今は、何を基準してよいのか分かりません。
一例:
Set r = .Range("A1", Range("A65536").End(xlUp)).Resize(, 17)
No.7
- 回答日時:
再び#5です。
> やっぱり罫線は表示されます。ヴァージョンは同じ2000です。
理由がわかりました。
> 説明不足だったのですが、Q列は、O列とP列とQ列のセルを結合させています。
> また、フッターにも文字入力をしていました。
結合セルがあったのですね。
残念です。フッターの有無は関係ないのですが、結合セルあるとできません。(-_-;)
A列のデータが文字列の場合でしたら、印刷範囲を自動的に拡張するために名前を定義
する方法もあります。
先頭から「A列の入力済み最終行」のQ列までを印刷範囲とする場合です。
同じように、A~Q列の列全体を選択して罫線(格子)を設定し、次のように名前を定義
します。(対象シートの名前が "Sheet1" だとして)
・名 前: Print_Area (必ずこの名前にしてください)
・参照範囲: =Sheet1!$A$1:INDIRECT(ADDRESS(MATCH("",Sheet1!$A:$A,-1),17))
印刷したい最終行のA列が空白の場合は、その行のA列のセルにスペースを入れます。
もし、A列が数値データの場合は、MATCH("",Sheet1!$A:$A,-1) の $A:$A の部分は、
B:Q列の中で文字列データが入っている列をひとつ選び、その列記号に書き換えて
ください。
また、印刷したい最終行のその列が空白の場合は、そのセルにやはりスペースを入れて
ください。
印刷範囲を示す破線が自動的に表示されるので、わかりやすいと思います。
。
No.6
- 回答日時:
#5です。
> 少し飲み込めないのですが。
私の説明が舌足らずだったかも知れません。
> 不要な罫線も印刷対象になってしまいます。
バージョン違いで機能が異なるのでしたら、ごめんなさい。(私は Excel2000)
試しに、新規にExcelを開いてA~Gくらいまでの列全体を選択し、罫線(格子)を
指定してください。
その後、セル C30 だけに何か入力してから印刷プレビューしてみてください。
Excel2000では、罫線は A1:C30 の範囲にしか表示されません。
それ以外の範囲にも罫線は表示されていますか?
表示されていましたら、回答は無視してください。バージョン違いによる機能差
なのでしょう。
A1:C30 の範囲にだけ表示されているのでしたらOKです。
次に、C30 のデータを削除し E10 に何かを入力してから印刷プレビューを見ると、
やはり A1:C30 の範囲に罫線が表示されますね。
ここでブックを保存し、そのまま改めて印刷プレビューを表示しますと、A1:E10 に
だけ罫線が表示されます。
――ということです。
No.5
- 回答日時:
マクロを使わない簡単な方法です。
> 罫線は67行まで引いていますが印刷時には無視します。
67行目以下にはデータが何も入力されていないという前提です。
67行目以下にも別な表がある場合は、この回答は無視してください。
A1:Q65536(シート最終行)の範囲すべてに罫線を引いてしまいます。
こうしておくと、罫線も、データが入った最終行までしか印刷されません。
注)例えば50行目までデータを入力した後で20行目以下をクリアすると、
そのままでは50行目まで印刷されてしまいますので、いったん保存して
から印刷してください。(ブックを閉じる必要はありません)
すみません。
少し飲み込めないのですが・・・
不要な罫線も印刷対象になってしまいます。
それと、申し訳ないです。フッターに文字を入れている状態です。
お手数をおかけします。
No.4
- 回答日時:
Sub 最下行までを印刷範囲に設定()
With Columns("A:Q")
ActiveSheet.PageSetup.PrintArea = .Resize(.Find("*", _
, xlFormulas, , xlByRows, xlPrevious).Row).Address
End With
End Sub
A~Q列のうちデータの存在する(ブランクでない)最下行を取得し、当該行までを印刷範囲に設定。
すぐでなくても結構ですから、回答のあった数だけは今後回答するようにして下さい。
すみません。
お礼、遅くなりました。
ありがとうございました。
説明不足だったのですがQ列は、O列とP列とQ列
のセルを結合させています。
また、フッターにも文字入力をしていました。
どうもすみませんでした。
No.3
- 回答日時:
こんばんは。
以下のような、With の二重入れ子は、コードとして芳しくないのですが、まあ、とりあえず、こんな風にしてみました。罫線をなくしてしまうマクロというのもあるのですが、今回は、印刷の簡易モードを利用しました。なお、印刷する場合は、.PrintOut Preview:= False にしてください。
後は、記録マクロと見比べながら、アレンジしてみてください。微調整が必要かもしれません。
Sub PrintPreparing()
Dim r As Range
With ActiveSheet
Set r = .Range("A1", Range("Q65536").End(xlUp))
With .PageSetup
If r.Rows.Count > 1 Then '2行以上だったら印刷
.PrintArea = r.Address
End If
'本来は、PaperSizeなどのプロパティを入れるとなおよい
.Draft = True '罫線などは省略するモード
End With
.PrintOut Preview:=True '実際にプリントするようになれば、False
.PageSetup.Draft = False 'ドラフトモードは、戻しておく
End With
Set r = Nothing
End Sub
ありがとうございました。
説明不足でした。
Q列は、O列P列Q列のセルを結合させたものです。
勉強にもなりますのでアレンジして活用させていただきます。
お手数をお掛けしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
- Excel(エクセル) エクセル2013「次のページ数に合わせて印刷」が小さすぎる 9 2023/03/28 10:18
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) エクセルVBAで複数のシート印刷設定 1 2022/09/07 12:03
- Excel(エクセル) エクセルシートのPDFでの保存 2 2022/09/06 13:05
- Excel(エクセル) VBA 1 2023/04/27 13:37
- Excel(エクセル) 請求書と領収書の作成 4 2022/11/10 16:13
- Excel(エクセル) OFFSET関数を使用した印刷範囲の自動変更について 2 2022/06/02 12:11
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
時間によってファイル名が変わ...
-
Excelで、決まった行を繰り返し...
-
Excel 2019 のピボットテーブル...
-
WPS OFFICEでの縦書きについて
-
【マクロ】ファイル名の変更に...
-
Aというブックの1というシート...
-
VBA Private Sub Worksheet_Cha...
-
エクセルで 例えば 伊藤と名前...
-
excelの不要な行の削除ができな...
-
Excelでの時間帯の入力
-
行数が不規則な一週間ごとの合...
-
ある列、或いは、ある行のセル...
-
【マクロ】フォルダからエクセ...
-
文字列になっている時間をVBAで...
-
シートAで横に並んだ項目→シー...
-
Excel2013のF6キー操作について
-
マクロの有効化するダイヤログ...
-
エクセルの順位別一覧表の自動...
-
Excel:一部のフォントでセルの...
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報