Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1649 / 13644 ツリー ←次へ | 前へ→

【72832】タイトル行にページ番号を入れたい。 まこと 12/9/23(日) 16:13 質問[未読]
【72833】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/23(日) 21:24 回答[未読]
【72835】Re:タイトル行にページ番号を入れたい。 まこと 12/9/24(月) 8:58 質問[未読]
【72836】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/24(月) 10:49 回答[未読]
【72837】Re:タイトル行にページ番号を入れたい。 まこと 12/9/24(月) 13:43 質問[未読]
【72838】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/24(月) 15:46 回答[未読]
【72839】Re:タイトル行にページ番号を入れたい。 まこと 12/9/24(月) 19:09 発言[未読]
【72842】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/24(月) 20:01 発言[未読]
【72840】Re:タイトル行にページ番号を入れたい。 とおりすがり 12/9/24(月) 19:18 発言[未読]
【72841】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/24(月) 19:47 発言[未読]
【72843】Re:タイトル行にページ番号を入れたい。 まこと 12/9/24(月) 22:02 発言[未読]
【72844】Re:タイトル行にページ番号を入れたい。 とおりすがり2 12/9/24(月) 22:53 発言[未読]
【72846】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/25(火) 6:23 発言[未読]
【72848】Re:タイトル行にページ番号を入れたい。 UO3 12/9/25(火) 6:51 発言[未読]
【72849】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/25(火) 7:48 発言[未読]
【72863】Re:タイトル行にページ番号を入れたい。 12/9/26(水) 7:45 発言[未読]
【72865】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/26(水) 9:29 発言[未読]
【72873】Re:タイトル行にページ番号を入れたい。 12/9/27(木) 7:52 発言[未読]
【72845】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/25(火) 6:08 回答[未読]
【72847】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/25(火) 6:47 発言[未読]
【72850】Re:タイトル行にページ番号を入れたい。 まこと 12/9/25(火) 7:54 お礼[未読]
【72853】Re:タイトル行にページ番号を入れたい。 まこと 12/9/25(火) 14:40 質問[未読]
【72854】Re:タイトル行にページ番号を入れたい。 UO3 12/9/25(火) 15:02 発言[未読]
【72860】Re:タイトル行にページ番号を入れたい。 とおりすがり2 12/9/25(火) 21:02 発言[未読]
【72864】Re:タイトル行にページ番号を入れたい。 まこと 12/9/26(水) 8:59 お礼[未読]
【72867】Re:タイトル行にページ番号を入れたい。 ドカ 12/9/26(水) 9:41 発言[未読]
【72870】Re:タイトル行にページ番号を入れたい。 とおりすがり2 12/9/26(水) 20:46 発言[未読]

【72832】タイトル行にページ番号を入れたい。
質問  まこと  - 12/9/23(日) 16:13 -

引用なし
パスワード
   またお世話になります。
    A      B      C      D      E
1 

3                      1ページ←ここにページ番号を入れたい
4         性別    住所   出身高校  保護者名 ・・・・・
5 山田宏明    男     ・・      ・・     ・・
6 青木 真    女     ・・      ・・     ・・
7 加々美武    男     ・・      ・・     ・・
8 広重昭典    男     ・・      ・・     ・・
 
上のようなデータが400名くらいあります。このデータを上から50名ずつ
紙に印刷したいので 

Sub 改ページ()
Dim i As Long
i = Range("A65536").End(xlUp).Row
For i = 51 To i Step 50
  ActiveSheet.HPageBreaks.Add before:=Cells(i, 1)
Next i 
End Sub

として、50名ずつに改ページできたのはよいのですが、問題はデータの見出しの部分(というかページ番号もいれた見出し)なのです。
『上のシートでD3のセルに、改ページされるごとに自動でページ番号を入れたいと思っております。』(1番から50番が記載されている紙には1、51番から100番が記載されている紙には2というように)。
ページ設定で、タイトル行として3、4行目を登録しても、このままでは改ページ
してもD3のページ番号は変わりませんよね。どうしたらよいのでしょうか?
どうぞ、皆様のお力をお貸し下さいませ。
ヘッダー、フッターのページ番号設定は使わずに御願いいたします。

【72833】Re:タイトル行にページ番号を入れたい。
回答  ドカ  - 12/9/23(日) 21:24 -

引用なし
パスワード
   ▼まこと さんへ

こんなことですか?
適当に書いたので、コードの整理もしてませんが、これでさらに疑問があれば、お尋ねください。

Sub 改ページ()
Dim i As Long
i = Range("A65536").End(xlUp).Row


Cells(3, 4) = 1

For m = 0 To Range("A65536").End(xlUp).Row / 50

  Rows(51 + m * 50).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
  Range("D" & (51 + m * 50)) = m + 1
  Next

For i = 51 To i Step 50
  ActiveSheet.HPageBreaks.Add before:=Cells(i, 1)
Next i
End Sub

【72835】Re:タイトル行にページ番号を入れたい。
質問  まこと  - 12/9/24(月) 8:58 -

引用なし
パスワード
   ▼ドカ さんへ
前の件では大変お世話になりました。また質問に答えていただき
本当に嬉しく思っております。

お作りになったコードを実際に走らせてみたのですが、
印刷プレビューでみると、確かにページ番号は改ページごとに
変化するのですが、データの見出しである4行目の住所、出身高校、
保護者名・・・が2ページ以降は表示されませんでした。
4行目の見出しも表示しつつ、その上(D3ページ番号)は改ページ
で変化させたいのです。

【72836】Re:タイトル行にページ番号を入れたい。
回答  ドカ  - 12/9/24(月) 10:49 -

引用なし
パスワード
   ▼まこと さんへ
とりあえず時間が無くて、こんな感じですが。
また、改ページが私のパソコンでは、うまく動いていませんが、私のパソコンがおかしいのでしょうか?
また、何かあれば聞いてください。
今日は夜しかゆっくりとした時間が取れませんのであしからず。


Sub 改ページ1()
Dim i, m As Long
i = Range("A65536").End(xlUp).Row

Range("D" & (3)) = 1

For m = 0 To Range("A65536").End(xlUp).Row / 50 - 1

  Rows(51 + m * 50).Resize(2).Insert Shift:=xlDown
  Range("D" & (51 + m * 50)) = m + 1
  Rows(4).Copy
  Rows(51 + m * 50 + 1).PasteSpecial
  Excel.Application.CutCopyMode = False

Next

For i = 51 To i Step 50
  ActiveSheet.HPageBreaks.Add before:=Cells(i, 1)
Next i

End Sub

【72837】Re:タイトル行にページ番号を入れたい。
質問  まこと  - 12/9/24(月) 13:43 -

引用なし
パスワード
   ▼ドカ さん:

>また、改ページが私のパソコンでは、うまく動いていませんが、私のパソコンがおかしいのでしょうか?

申し訳ありません。

Sub 改ページ1()
Dim i As Long
i = Range("A65536").End(xlUp).Row

最初の改ページの行を間違えておりました。51ではなく55の間違いでした。
    ↓
For i = 55 To i Step 50
  ActiveSheet.HPageBreaks.Add before:=Cells(i, 1)
Next

End Sub

これでしかし、ドカ様のコードをこの中に組み込ませてもらっても
微妙に行がずれてしまいます。また、1ページが二つ続いてしまいます。

Range("D" & (3)) = 1 と3を()でくくる意味は何なんでしょう?
お時間があるときで全然結構ですのでまた教えていただければ幸いです。

【72838】Re:タイトル行にページ番号を入れたい。
回答  ドカ  - 12/9/24(月) 15:46 -

引用なし
パスワード
   ▼まこと さん:

>最初の改ページの行を間違えておりました。51ではなく55の間違いでした。

改ページの行を変数にしましたので、自由に対応出来ると思います。

>Range("D" & (3)) = 1 と3を()でくくる意味は何なんでしょう?
>お時間があるときで全然結構ですのでまた教えていただければ幸いです。

すみません。修正するのが面倒だっただけです。
(本当は以前から、Range("D3")の数字が""で囲まれている意味が分からなかったので、ちょっと実験してみた残骸です。)

コードが複雑になってしまい、私も後からは理解できないと思うのですが、ぴったり区切り良く、(データがないのにページ数が記入されないように)するために、こうなりました。

Sub 改ページ100()
Dim i, n, m, no, no2, st As Long

no = 50 '○行おきに挿入
no2 = 2 '挿入する行の数
st = 55 '最初の挿入行位置
i = Range("A65536").End(xlUp).Row

Range("D3").value = 1

For m = 0 To (i - (st - no + no2)) / (no - no2) - 1
  Rows(st + m * no).Resize(2).Insert Shift:=xlDown

  Range("D" & (st + m * no)).value = m + 1
  Rows(4).Copy
  Rows(st + m * no + 1).PasteSpecial
  Excel.Application.CutCopyMode = False
Next

n = Range("A65536").End(xlUp).Row

For i = st To n Step no
  ActiveSheet.HPageBreaks.Add before:=Cells(i, 1)
Next i

End Sub

【72839】Re:タイトル行にページ番号を入れたい。
発言  まこと  - 12/9/24(月) 19:09 -

引用なし
パスワード
   ドカ様、わざわざ行を変数にしていただき、本当に心使いありがとうございます。変数部分の数値をいろいろ変えてご提示されたコードを走らせても、最初の一ページだけはうまく50名で改ページできるのですが、2ページ以降はだんだんずれていってしまいます。
憶測ですが、

Rows(st + m * no).Resize(2).Insert Shift:=xlDown

このコードで行を挿入しているので、行の数が途中でだんだんずれていって
しまっているのではないかと考えたのですが。
見当違いであったら申し訳ありません。

正直どうしてよいのかお手上げの状態です。

【72840】Re:タイトル行にページ番号を入れたい。
発言  とおりすがり  - 12/9/24(月) 19:18 -

引用なし
パスワード
   ▼ドカ さん:

本題とは関係ありませんが、ちょっと気になったので。

>Dim i, n, m, no, no2, st As Long

この書き方は stだけがLong型で他はVariant型になっています。
それぞれ省略せず宣言しないと意図しない結果になる恐れがあります。

すでに知っている事でしたら、ご容赦下さい。

【72841】Re:タイトル行にページ番号を入れたい。
発言  ドカ  - 12/9/24(月) 19:47 -

引用なし
パスワード
   ▼とおりすがり さん
その辺のところはさぼっていましたので、まったく知識がなく、ご指摘ありがとうございます。

【72842】Re:タイトル行にページ番号を入れたい。
発言  ドカ  - 12/9/24(月) 20:01 -

引用なし
パスワード
   ▼まこと さん:
まず、ページ数が、1、1、2、3と1が2回続いていたので、1箇所修正しました。

Sub 改ページ100()
Dim i, n, m, no, no2, st As Long

no = 50 '○行おきに挿入
no2 = 2 '挿入する行の数
st = 55 '最初の挿入行位置
i = Range("A65536").End(xlUp).Row

Range("D3").value = 1

For m = 0 To (i - (st - no + no2)) / (no - no2) - 1
  Rows(st + m * no).Resize(2).Insert Shift:=xlDown

  Range("D" & (st + m * no)).value = m + 1’←ここを修正
  Rows(4).Copy
  Rows(st + m * no + 1).PasteSpecial
  Excel.Application.CutCopyMode = False
Next

n = Range("A65536").End(xlUp).Row

For i = st To n Step no
  ActiveSheet.HPageBreaks.Add before:=Cells(i, 1)
Next i

End Sub


>ドカ様、わざわざ行を変数にしていただき、本当に心使いありがとうございます。変数部分の数値をいろいろ変えてご提示されたコードを走らせても、最初の一ページだけはうまく50名で改ページできるのですが、2ページ以降はだんだんずれていってしまいます。
>憶測ですが、

セルの行数で会話をして、お互いの認識を一致させましょう。
まず、
55行目で改行
105行目で改行
155行目で改行
となっていると思いますが、これをどうしたいのでしょうか?

ページ数と項目の行を追加しているので、当然、2行づつデータが下にずれていきますよね。それを回避したいと言われても、私にはどうしようもできないです。

【72843】Re:タイトル行にページ番号を入れたい。
発言  まこと  - 12/9/24(月) 22:02 -

引用なし
パスワード
   ▼ドカ さん:

私の初歩的な勘違いでした。印刷プレビューで拡大/縮小を小さくして
一ページ全画面をまるまる見えるように%を下げると見事に50名ずつ
改ページできていました。拡大率が大きいままで見ていたもので
表示できていない部分があたかも次のページに改ページされているように
に見えていただけでした。本当にお手数をおかけしました。お恥ずかしい。


>まず、ページ数が、1、1、2、3と1が2回続いていたので、1箇所修正しました。

しかし、やはり私のパソコンではまだ最初のページと次のページでは、まだ
1が2回続いて見えています。何故なんでしょうか?

【72844】Re:タイトル行にページ番号を入れたい。
発言  とおりすがり2  - 12/9/24(月) 22:53 -

引用なし
パスワード
   横から失礼します。

>50名ずつ紙に印刷したいので
今は50名ずつにはなっていないように見えますが。

いくつか案があると思います。

第一案
ヘッダーにページ番号を出力します。
これが一番自然な方法です。
こういう場合に、ヘッダーを使わなくていつ使うのでしょうか。
>ヘッダー、フッターのページ番号設定は使わずに御願いいたします。
その理由を教えてください。

第二案
3行目:4行目を行タイトルに指定。
1ページ印刷する毎に、事前に3行目のページ数を更新します。
例えば、こんな風に。

Sub 印刷2()
  Dim lastRow As Long
  Dim k As Long
  
  lastRow = Range("A5").End(xlDown).Row

  With ActiveSheet.PageSetup
    .PrintTitleRows = "$3:$4"
  End With

  For k = 1 To ((lastRow - 4) + 49) \ 50
    Cells(3, 8).Value = k
    ActiveSheet.PageSetup.PrintArea _
      = Cells(5 + 50 * (k - 1), 1).Resize(50, 8).Address
    ActiveSheet.PrintPreview
    '' ActiveSheet.Print
  Next
End Sub

第三案
今の方法。
行挿入は下から上に向かって実行していくのが鉄則。
この場合も、そうすればできると思います。

【72845】Re:タイトル行にページ番号を入れたい。
回答  ドカ  - 12/9/25(火) 6:08 -

引用なし
パスワード
   ▼まこと さん 
今日はちょっと色々あって、まったくドジばっかりです。
次のようにしてください。

Range("D" & (st + m * no)).value = m + 2’←ここを修正

【72846】Re:タイトル行にページ番号を入れたい。
発言  ドカ  - 12/9/25(火) 6:23 -

引用なし
パスワード
   ▼とおりすがり2 さん:
とおりすがり2さんはとおりすがりさんとは別人ということですよね。

>第二案
>3行目:4行目を行タイトルに指定。

なるほどと思いましたが、3、4行目が使われる限り、最初の位置から行がずれることは変わりませんよね。
ただ、今回は、質問者さんの勘違いで、私のコードで期待通り動いたようです。


>第三案
>今の方法。
>行挿入は下から上に向かって実行していくのが鉄則。
>この場合も、そうすればできると思います。

途中であれ!っと気がつきましたが、今回は上からでも、下からでも、コードの複雑さや対処方法は変わらないなと思い、そのままやりました。
鉄則なら覚えておきたいと思います。
と、ここまで書いてあれ!やっぱり上からが鉄則じゃないですか。
下からだと最初の一歩でつまづくと思いますよ。どの行にページ、タイトルを入れれば良いか考えなければいけないし、そのページを何ページにするかも頭を使います。

【72847】Re:タイトル行にページ番号を入れたい。
発言  ドカ  - 12/9/25(火) 6:47 -

引用なし
パスワード
   最後にちょっとしたメモを書かせてください。
下記のように、最終行がデータがないのに、行、項目が書かれてしまわないように、今回は、何回書いたら良いか最初に計算で求めました。
でも、色々考えるのが面倒な場合は、追加した項目の下にデータがあるか無いかを見て判断したほうがてっとりばやい。

また、まことさんが最初のデータのイメージを崩さないように印刷したいのであれば、2行追加した分、印刷範囲を拡大すれば対応できる。ただし、その分は縮小された印刷になりますが。


項目
データ


データ

項目
データなし

【72848】Re:タイトル行にページ番号を入れたい。
発言  UO3  - 12/9/25(火) 6:51 -

引用なし
パスワード
   ▼ドカ さん:

>途中であれ!っと気がつきましたが、今回は上からでも、下からでも、コードの複雑さや対処方法は変わらないなと思い、そのままやりました。
>鉄則なら覚えておきたいと思います。
>と、ここまで書いてあれ!やっぱり上からが鉄則じゃないですか。
>下からだと最初の一歩でつまづくと思いますよ。

おはようございます。
ドカさんが、、通常書いておられるような、直接シートに対して挿入・削除を行う
方式であれば、「鉄則」としては下から上です。
そのほうが、「コードが簡単になる」ということです。
上から処理することももちろんできますが、そのための工夫が必要です。

>どの行にページ、タイトルを入れれば良いか考えなければいけないし、
>そのページを何ページにするかも頭を使います。

そうですね。ですから、そこは、「頭を使」って、一工夫することになりますね。

まぁ、いずれにしても「工夫」はしかにゃいけないでしょうね。

【72849】Re:タイトル行にページ番号を入れたい。
発言  ドカ  - 12/9/25(火) 7:48 -

引用なし
パスワード
   ▼UO3 さん
おはようございます。

やはり下からが鉄則ですか。
当然、後から処理する行に影響を与えないからですよね。
では、今後はこれを鉄則として取り組みますね。

(そういえば、変数の宣言もまたおかしなことを書いてしまったようで、また、勉強しておきます。)

【72850】Re:タイトル行にページ番号を入れたい。
お礼  まこと  - 12/9/25(火) 7:54 -

引用なし
パスワード
   皆様、おはようございます。
多くの方の貴重なアドバイス、本当にありがとうございます。

とおりすがり2様へ
>ヘッダーにページ番号を出力します。
>これが一番自然な方法です。
>こういう場合に、ヘッダーを使わなくていつ使うのでしょうか。
>>ヘッダー、フッターのページ番号設定は使わずに御願いいたします。
>その理由を教えてください。

ページ番号を表示する場所をセルの位置単位で細かく指定できると
思った次第であります。

>3行目:4行目を行タイトルに指定。
>1ページ印刷する毎に、事前に3行目のページ数を更新します。

行タイトルにすることは、全く思いつきませんでした。
その上コード例まで示していただき、感謝感謝です。

特にドカ様へはお世話になりました。
お忙しい中、未熟な私の質問、要求に応えていただき本当に感謝して
おります。この度は本当にありがとうございました。
重ね重ね、厚くお礼申し上げます。

これからも少しずつ精進していきたいと思います。

【72853】Re:タイトル行にページ番号を入れたい。
質問  まこと  - 12/9/25(火) 14:40 -

引用なし
パスワード
   通りすがり2さんがご提示してくれた下記のコードなのですが、
8行目の \ 50 の\はどういう意味なのでしょうか?
初めてみる用法で、ネットで検索してもわかりませんでした。
よろしければ、ご教授下さい。

Sub 印刷2()
  Dim lastRow As Long
  Dim k As Long
  
  lastRow = Range("A5").End(xlDown).Row

  With ActiveSheet.PageSetup
    .PrintTitleRows = "$3:$4"
  End With

  For k = 1 To ((lastRow - 4) + 49) \ 50← ここがわかりません。
    Cells(3, 8).Value = k
    ActiveSheet.PageSetup.PrintArea _
      = Cells(5 + 50 * (k - 1), 1).Resize(50, 8).Address
    ActiveSheet.PrintPreview
    '' ActiveSheet.Print
  Next
End Sub

【72854】Re:タイトル行にページ番号を入れたい。
発言  UO3  - 12/9/25(火) 15:02 -

引用なし
パスワード
   ▼まこと さん:

こんにちは

○○ \ 50 は、○○ を 50 で割った「商」です。
VBAのヘルプで、演算子を参照してください。

(ちなみに、付録?で)

○○ Mod 50 なら ○○ を 50 で割った余りになります。

【72860】Re:タイトル行にページ番号を入れたい。
発言  とおりすがり2  - 12/9/25(火) 21:02 -

引用なし
パスワード
   すでにご指摘いただきました。

蛇足で説明を加えると、、
lastRow - 4 でデータの数を示しますから、
50未満の端数データが一行あっただけでも、一ページにカウントするよう、
49を加えたうえで、50による商をとったものです。

maxPage = WorksheetFunction.Ceiling((lastRow - 4), 50) / 50
つまり、「50データ区切りで切り上げ」てから 50で割る、
としたほうが、意図が伝わり易かったかもしれない。


ついでながら、
第三案 を 仮に書くとすれば、こんな感じになるのではないですか?一例です。

Sub 印刷3()
  Dim lastRow     As Long
  Dim maxPage     As Long
  Dim lastHeaderRow  As Long
  Dim page      As Long
  Dim k        As Long

  lastRow = Range("A65536").End(xlUp).Row
  maxPage = WorksheetFunction.Ceiling((lastRow - 4), 50) / 50
  lastHeaderRow = (maxPage - 1) * 50 + 5

  ActiveSheet.ResetAllPageBreaks '改ページをいったんクリア

  '最終ページから2ページまでを処理(挿入は下から上に)
  page = maxPage
  For k = lastHeaderRow To 55 Step -50
    Rows("3:4").Copy
    Rows(k).Resize(2).Insert Shift:=xlDown
    Cells(k, 4).Value = page
    page = page - 1
    ActiveSheet.HPageBreaks.Add before:=Cells(k, 1)
  Next
  Application.CutCopyMode = False

  Cells(3, 4).Value = 1  ' 1ページ目のページ

  ' 印刷範囲設定と印刷(プレビュー)
  lastRow = Range("A65536").End(xlUp).Row
  ActiveSheet.PageSetup.PrintArea _
     = Range(Cells(3, 1), Cells(lastRow, 8)).Address
  ActiveSheet.PrintPreview
  ''' ActiveSheet.PrintOut
End Sub

【72863】Re:タイトル行にページ番号を入れたい。
発言    - 12/9/26(水) 7:45 -

引用なし
パスワード
   こんにちは。横から失礼します。

どうもよく分からないのですが、どうしてUO3さんの説明で
ドカさんは納得できるのでしょう。
失礼ながら、ちゃんと理解されたのでしょうか。
信頼する回答者に言われたから受け入れただけではありませんか?
余計なお世話かもしれませんが、心配です。

「削除挿入を伴うループは後ろから前へ」「そのほうがコードが簡単」
と言われていることはご存知で、そのうえでなお
「でも本件は前から後ろでもOK」と判断されたのではないですか?
その判断は間違ってはいないと思いますが。


▼ドカ さん:
>▼UO3 さん
>おはようございます。
>
>やはり下からが鉄則ですか。
>当然、後から処理する行に影響を与えないからですよね。
>では、今後はこれを鉄則として取り組みますね。
>
>(そういえば、変数の宣言もまたおかしなことを書いてしまったようで、また、勉強しておきます。)

【72864】Re:タイトル行にページ番号を入れたい。
お礼  まこと  - 12/9/26(水) 8:59 -

引用なし
パスワード
   UO3様、通りすがり2様、私の初歩的な質問に答えていただき
ありがとうございました。まだまだ力のない私ですが、さらに
勉強していきたいと思います。皆様、これからもよろしくお願い
いたします。

【72865】Re:タイトル行にページ番号を入れたい。
発言  ドカ  - 12/9/26(水) 9:29 -

引用なし
パスワード
   ▼佳 さん こんにちは。
ちょっと気になることがあって、また、のぞいて見たら、レスが増えていたので、発言しています。
今、発言しているのも、実は深層心理の中で、”佳さんだ”と、お名前を見たからでしょう。多分。

大体、回答されている方の多くは、かなりのレベルの方だと、推測されます。
一方、私はお遊び程度なので。

>こんにちは。横から失礼します。
>
>どうもよく分からないのですが、どうしてUO3さんの説明で
>ドカさんは納得できるのでしょう。
>失礼ながら、ちゃんと理解されたのでしょうか。
>信頼する回答者に言われたから受け入れただけではありませんか?

こりゃ手厳しいですねぇ。半分はおっしゃるとおりです。
まず、私の考え方のひとつに、信頼できる人の話は、まず、素直に信じようということがあります。
まあ、偉い人でも、たまには間違えるでしょうが、その割合は低いですよね。


>「削除挿入を伴うループは後ろから前へ」「そのほうがコードが簡単」
>と言われていることはご存知で、そのうえでなお
>「でも本件は前から後ろでもOK」と判断されたのではないですか?
>その判断は間違ってはいないと思いますが。


これ、また、そのとおりで、本件は”前から”でもOKと判断しました。
そして、それは、正しいと思っていました。
でも、あまり議論しても・・・と思いがあって、鉄則なら受け入れようと述べました。

でも、実はこれを書いているのは、とおりすがり2さんのコードを見て、あれっ?やぱりこれは後ろからが正解だと思って思い直しています。

(ひとりごと)
印刷のことは興味がなく、まったく知らないので、これは質問者さんのコードを優先すればよいと考えました。
しかし、実際に取りかかると、まったく無視も出来ず、ちょっと混乱しました。

珍しく、本業が、胃が痛くなるほど悩んでいたので、色々な思考がぐじゃぐじゃになってしまいました。

【72867】Re:タイトル行にページ番号を入れたい。
発言  ドカ  - 12/9/26(水) 9:41 -

引用なし
パスワード
   ▼とおりすがり2 さん こんにちは

ちょっと気になり覗いてみました。
自分が苦労したところをどう処理しているか気になったからです。
でも、やはり、下から処理したことで、無駄な処理は、不要になっているようですね。

【72870】Re:タイトル行にページ番号を入れたい。
発言  とおりすがり2  - 12/9/26(水) 20:46 -

引用なし
パスワード
   もう終わっているようですが、印刷3 はちょっと酷いコードでした。
以下のとおり、部分的に直してください。
  lastRow = Range("A65536").End(xlUp).Row
  maxPage = WorksheetFunction.Ceiling((lastRow - 4), 50) / 50
  
  ActiveSheet.ResetAllPageBreaks '改ページをいったんクリア
  
  ' 最終ページから2ページまでを処理
  For page = maxPage To 2 Step -1
    k = (page - 1) * 50 + 5
    Rows("3:4").Copy
    Rows(k).Resize(2).Insert Shift:=xlDown
    Cells(k, 4).Value = page
    ActiveSheet.HPageBreaks.Add before:=Cells(k, 1)
  Next

【72873】Re:タイトル行にページ番号を入れたい。
発言    - 12/9/27(木) 7:52 -

引用なし
パスワード
   こんにちは。

ドカさん、コメントありがとうございます。

回答者は、けっこう端折ったもの言いをします。
とくに、しっかり説明すると長くなるとき。
例外があることを百も承知で「鉄則」と言ったりもします。
(理解できなくても受け入れてくれれば、総体として、
質問者にプラスになると考えた場合とか)

でもドカさんには、ちゃんと、確認して理解して、前へ進んで
欲しいなと思います。信頼できる人のコメントが正しいなら、
その正しいってことをちゃんと確認してです。

> とおりすがり2さんのコードを見て、あれっ?やぱりこれは後ろからが正解だと思って思い直しています。
(^^) そういうことなんです。
いや、その判断が正しいかどうかじゃなくて
自分自身が納得できるのが大切ってコトです。


(ひとりごと)
個人的には、「鉄則」より「定石」って言い方が好きです。
「鉄則」だと例外は許さない!!って感じですが、
「定石」なら、ことによってはもっといい「定石」の出て
くる余地がありそうで。

(ひとりごと2)
エクセルVBAを書くときは エクセルの知識が多いほうが何かと楽です。

お大事に。

1649 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free