dポイントプレゼントキャンペーン実施中!

「タイトル+本文」という形でのエクセルデータ(他DBから変換したもの)があります。1タイトルが終わり、続けてそれぞれの「タイトル+本文」が50組ぐらいあり、そのまま印刷する場合は、各々長さがバラバラなので各用紙にまたがって印刷されてしまいます。改ページを手動で設定して印刷する方法もあるのですが、量が多いのと今後も別のデータを取り込んだとき再び設定する必要があるので、何とか特定文字をキーに改ページ印刷を自動化できないかと色々方法を探しています。エクセル2000を使用しています。同じような経験をお持ちの方が居られましたらお聞きしたいです。

A 回答 (4件)

(1)セルの値全体で比較すれば良い時


#2のやり方
(2)先頭から何文字目かの定位置
If Cells(i, "B") = "xx" Then ----->
If Mid(Cells(i,"B"),3,2)="XX" then
3文字目から2文字がXXなら
(3)セルの文字列の中のどこかに含まれているか探す時
p=InStr(Cells(i,"B"),"xx")
If p=0 then
(含まれない時)
Else
(含まれる時)
End If
    • good
    • 0
この回答へのお礼

Mid関数のご説明に加えて(3)の例も教えて頂きましてありがとうございました。これから(1)~(3)のパターンをケースに応じて使い分けていこうと思います。

お礼日時:2003/11/15 23:51

#1です。



#2さんのサンプルで解決でしょうが、、、

A列内の ほげほげ を含むセルを探して改ページを挿入するサンプルマクロを書いてみました。

Sub Test()
Dim r As Range, fr, fa As String
 Application.ScreenUpdating = False
 With ActiveSheet
  Set r = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
  Set fr = r.Find("ほげほげ", LookAt:=xlPart)
  If Not fr Is Nothing Then
    fa = fr.Address
    Do
    If fr.Address <> "$A$1" Then .HPageBreaks.Add Before:=fr
      Set fr = r.FindNext(fr)
    Loop While Not fr Is Nothing And fa <> fr.Address
  End If
 End With
End Sub

ちょっとおせっかいですが、#2さんの例でxxを含むものを探す場合、
If Cells(i, "B") = "xx" Then を
If Cells(i, "A") Like "*xx*" Then
でも良いかと思います。
    • good
    • 1
この回答へのお礼

色々なマクロがあるのだなと奥の深さを痛感するとともに参考になります。おせっかいだなんてとんでもありません、私の方も手法の引き出しが増えるので感謝です。ありがとうございました。

お礼日時:2003/11/15 23:56

VBAで良くやります。


下記ではB列に文字列「xx」が出てくるか、30行を越えると、そこの直前行まで1ページに印刷しています。
列はA,B列しかないサンプルになっています。
本番に合わせて変えるところは、シート名、30行、
スタート行、最右列、先頭検出文字列(xx)、その文字列のある列(本例ではB列)でしょうか。
XXはタイトルの1部であるなら、MID関数でタイトルの先頭から数文字を識別できるように切り出しましょう。
Sub test01()
Worksheets("sheet1").Activate
d = Range("a1").CurrentRegion.Rows.Count
MsgBox d
s = 1
For i = 2 To d
If i > s + 30-1 Then
Range(Cells(s, "A"), Cells(i - 1, "B")).PrintOut
s = i - 1
Else
If Cells(i, "B") = "xx" Then
Range(Cells(s, "A"), Cells(i - 1, "B")).PrintOut
s = i
End If
End If
Next i
Range(Cells(s, "A"), Cells(d, "B")).PrintOut
End Sub
少数例(百数十行)でテスト済み。

この回答への補足

VBの構文まで丁寧につけて頂きましてありがとうございます。列は1列のみのデータでしたので、Cellsはひとつだけにすればよいのでしょうか。Mid関数の定義の仕方がよくわからなかったので、 "*xx*" として試してみようと思います。(プリンタが職場に1台しかなくなかなか試せないのですが)
imogasiさんのようにVBが記述できる人にはあこがれてしまいます。

補足日時:2003/11/14 22:49
    • good
    • 0

行タイトルを使えるような出力に元データを変更出来ないのですね?



データの合間にあるタイトルを特定出来るキーワードがあるなら、マクロで出来ると思いますが、、、
    • good
    • 0
この回答へのお礼

元データからの変換で1セルの中にタイトルとページ番号が一緒に取り出されています。タイトルは固定なので、それを検索キーワードにマクロかVBAを使うとできそうですが。。マクロやVBAの作り方がわからないもので。

お礼日時:2003/11/14 22:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!