No.6ベストアンサー
- 回答日時:
ちょっと時間がかかりますが、どの行ではみ出したか調べるには
次のようにします。
Function はみ出し行()
Dim X&, Y&, C&
ReDim G&(0)
C = -1
X = WorkSeets(n).Cells.SpecialCells(xlCellTypeLastCell).Row
For Y = 1 To X
WorkSeets(n).PageSetup.PrintArea = "$" & CStr(Y) & ":$" & CStr(Y)
If WorkSeets(n).VPageBreaks.Count > 0 Then
C = C + 1
ReDim Preserve G(C)
G(C) = Y
End If
Next
If C >= 0 Then はみ出し行 = G
End Function
はみ出しのあった行番号の配列、またはEmpty(はみ出し行がない)が
返ります。
もしかしたら、もっと上手い方法があるかも知れないけど、今は
分からないので、泥臭いけど、1行ずつ確かめています。
最後までご教授頂きありがとうございました。頂いた関数を上手く使うことができずお返事が遅くなってしまいました。これで、どの行がはみ出しているかを確認することができます。
色々やってみたことで分かったことは:
1. 画面上では境界を越えていなくても、印刷時には超えてしまうケースがある。
2. VPageBreaks.Count が0→1に変わるのは、画面上で文字列がページ境界に至っていなくても発生する。
これらは、プロポーショナルでもモノスペースでも同じなので、多分安全を見て実際よりも手前で改ページしてしまうのでしょうね。
どうもありがとうございました。
No.5
- 回答日時:
>表のどこではみ出しているかを直接的に知ることができない
VPageBreaks.Count > 0 の場合に限り、以下の方法で調べられる。
.VPageBreaks.Item(1).Location.Cells.Column
垂直方向に分割された2番目のブロックの左端セルの列位置を示す。
>どのタイミングで
セルの内容が変更され、垂直方向の分割数が変わる時
問題はこの数が0→1になる条件ですが、垂直分割ブロックの最右端に
文字、あるいは印刷対象が掛かった時です。実際には印刷幅として、
十分に余裕があっても、このセルに少しでもはみ出すと分割数が
増えます。(Excelのバグだろうけど、仕方ないです)
つまり、右端に幅の広いセルを置くと、誤認する確率が高くなるという
ことです。よって、右側の印刷限界に、極狭い幅の列(捨て列)を
置いて回避します。
大変感謝です。
画面上でまだセルや縦改ページまでに余裕があってもはみ出していると判断されているのは、Excelの特徴(?)なんですね。まさに、右端に幅の広いセルを置いておりました。回避方法もありがとうございます。
>>表のどこではみ出しているかを直接的に知ることができない
では言葉足らずでした。はみ出しを発生させたセルの位置を知ることでそのセルへの文字の割り当てをやり直すような処理にしようとしていました。教えていただいた
>.VPageBreaks.Item(1).Location.Cells.Column
のうち、
.VPageBreaks.Item(1).Location.Cells
でもって来られるセルは縦改ページ後の左上のセルで、はみ出しを発生させたセルのRow方向の位置は分かりませんから、どこのセルではみ出しを発生させたかは直接的にはわからないようです。
いずれにせよページ右端のセルに割り当てを行う際に毎回はみ出しチェックすることで、これは回避することができますから、やりたいことはできそうです。
ご指導頂き、どうもありがとうございました。心よりお礼申し上げます。
No.4
- 回答日時:
>印刷範囲をはみ出した
それが知りたい?
If Worksheets(n).VPageBreaks.Count = 0 Then
MsgBox "はみ出していません"
Else
MsgBox "はみ出しています"
End If
n番目のシートの垂直方向のページ分割数を求めました。
お返事ありがとうございます。
違った視点からのアプローチをありがとうございます。
マクロで生成される表が数十ページから100ページあまりとなり、目視でどこがはみ出しているかを毎回チェックするのが大変であったり、時として目視では分かりづらかったりするので、有るセルに割り当てられた文字列が印刷時に印刷範囲を超えているかどうかを知ることで、マクロでの処理中に改行なりなんなりの処理をすることを考えています。
VPageBreaksを使う方法は、垂直ページの分割数でみていますから、
1. 表のどこではみ出しているかを直接的に知ることができない。
2. どのタイミングでExcelが自動的に垂直ページ分割をするかを知る必要があります。
1.については縦ページ境界に近いセルに文字列を割り当てた後に毎回チェックを入れることで、どこで印刷範囲を超えたかを知ることができます。(あまりきれいではないですが…)
2.について試してみているのですが、どのタイミングでWorksheets(n).VPageBreaks.Count が0から1に設定されるかを知ることができていません。たとえば、新規作成→印刷プレビューでどのセルまでが1ページ内に印刷されるか=システム側の印刷設定が分かります。列1の各カラムに1,2,3,4...と入力し(私の場合はカラムIまでが1ページとなりますのでIまで)、印刷プレビューで9が表示されることを確認した上で(つまりはみ出していない)このマクロを適用すると、「はみ出しています」といわれます。どういうタイミングでVPageBreakが設定されるかご存知でしたら、追加で教えていただけないでしょうか?
No.3
- 回答日時:
> 残念ですが、おっしゃるとおり印刷してしまえば分かるのですが、印刷前にVBAで文字列の調整をするのが目的なんです。
いや、だから #1 さんは 「印刷前に印刷プレビューで確認してみれば?」 という提案をしているのですよ。
お返事ありがとうございます。
「印刷前に印刷プレビューで確認してみれば?」
というのは、「印刷プレビュー表示にして目視ではみ出しを確認したらどうですか?」という提案と受け取りました。これは実際に今やっていることで、これを自動化したく質問させていただいた次第です。
印刷プレビューを使用することで、印刷範囲をはみ出したことをVBAマクロ上から検出する手法があるのでしたら、教えていただけますでしょうか?お手数をおかけします。
No.2
- 回答日時:
最近、
『プロポーショナルフォントの文字列から印刷幅を求める関数』
http://oshiete1.goo.ne.jp/qa5071261.html
このようなスレッドがありました。参考になれば。
#しばらくお待ちになれば、この質問者のnoah7150さんから回答がはいるかもしれませんね :)
お返事ありがとうございます。
教えていただいたスレッドを読ませていただきました。
使えそうなやり方がありそうですので、試してみたいと思います。
Excelで文字列を使うと必ず表示/印刷の問題に引っかかるので、折り返しや縮小以外でも簡易で一般的な解決策が有るのかと思ってました。皆さん印刷前にプレビューして小編集して印刷するという手順でやっていらっしゃるのでしょうかね。
どうもありがとうございました。おすすめにしたがって、もう少し待ってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
ちょっと先の未来クイズ第4問
11月ごろに発表される、2024年の「新語・流行語大賞」にノミネートされる言葉を書けるだけ書いてください。
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
プロポーショナルフォントの文字列から印刷幅を求める関数
Excel(エクセル)
-
エクセル「折り返して全体を表示」での折り返しの行数取得方法
Excel(エクセル)
-
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
-
4
セル入力文字が、「右のセルにはみ出す場合と」「はみ出さない場合」の違い
Excel(エクセル)
-
5
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
6
VBAで条件によりフォントサイズを自動で変更したい2
Excel(エクセル)
-
7
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
8
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
9
エクセルで折り返しと縮小の同時設定は無理?
Excel(エクセル)
-
10
文章の整形について
Excel(エクセル)
-
11
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
【VBA】結合セルの罫線処理について
Excel(エクセル)
-
14
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
15
Excelの条件付き書式設定の太い罫線
Excel(エクセル)
-
16
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
19
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
20
VBAで文字を反映させると255文字の制限になってしまいます。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サイト全体を縮小して印刷する...
-
ページ内の画像印刷について
-
インラインフレームの印刷について
-
VBAで印刷ページ最終行にページ...
-
印刷プレビュー表示後ユーザー...
-
Excel VBA 「印刷中」メッセー...
-
PDFファイルを開かずに印刷...
-
C# 2010 PrintPreviewDialogか...
-
WEBでのフォーム入力後の印刷
-
ブラウザサイズ変更でオブジェ...
-
ページ内にスクロールバーのあ...
-
Excel VBAで文字列の可視長を得...
-
印刷ダイアログの印刷ボタンを...
-
outlook 文字を揃えたい。tab...
-
マイクロ(μ)の文字を半角で出...
-
メールで、榊の文字を木辺に神...
-
入力規則のリストの文字の大き...
-
cssファイルの名称付け
-
テキストエディタmiの表示文字...
-
MsgBoxについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAで文字列の可視長を得...
-
EXCEL VBA 印刷プレビューダイ...
-
PDFファイルを開かずに印刷...
-
excelにて各シートの総印刷ペー...
-
ページ内にスクロールバーのあ...
-
EXCEL VBAでPDFファイルを開い...
-
ACCESS VBA レポートプレビュー...
-
サイト全体を縮小して印刷する...
-
phpについてですかね、印刷ボタ...
-
Excel VBA 「印刷中」メッセー...
-
VBのDataGridView印刷
-
googleマップのストリートビュ...
-
ACCESSで印刷プレビューをした...
-
印刷時ヘッダーとフッターを挿入
-
印刷するときにテキストボック...
-
コマンドプロンプトでフォルダ...
-
Accessレポートでの改ページ
-
C# 印刷可能領域と余白範囲...
-
ヘッダやフッタの印刷をしたくない
-
ランディングページの数え方が...
おすすめ情報