-PR-
解決済み

エクセルの行タイトルの質問なんです。

  • 暇なときにでも
  • 質問No.66527
  • 閲覧数104
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 78% (39/50)

シートが30シート(全て違うデータで、平均一シートあたり三ページある)に、一度に、印刷の設定で全てのシートの全てのページに行タイトル(5行含罫線)を 設定できる方法を 教えてください。

全てのシートを選択して行タイトルをつけようとしても出来なかったんです。

行タイトルのマクロを組んで、一つずつのシートに行タイトルをつけることは、出来るのですが、出来れば、一回で、全てのシートに設定したいんです。もしも、出来るならば、よろしくお願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル13

ベストアンサー率 68% (791/1163)

前回「シー名は連番を想定しています。」としてしまったのがまずかったようで、視点がシート名にいってしまったようですね。 For Next の方が分かり易いと考えましたが、シート名はユーザが自由に付けるべきで、モジュール側が連番を強いるべきではなかったと反省しています。
ユーザが意味を持って付けたシート名を意味不明な連番に変えてしまうのは危険と思いますので、シート名を変えるマクロは作成辞退させてください。
代わりに、シート名がどのように付けてあっても共通行範囲をタイトル行にするマクロを作りましたので参考にして下さい。
 ※31シート目以降にタイトル行を付けたくないシートがあるのではないかと想像したのも For Next を使った理由でした。
 ※行タイトルを設定したくないシートがあれば 'If ws.Name = "*****1" の箇所にそのシート名を入れて「'」をはずして下さい。

Sub HeaderSet2()
Dim ws As Worksheet 'ワークシート
Dim TaitolSetFLG As Boolean '行タイトルセットの可否
'全てのシートに同じ行を設定
For Each ws In Worksheets
TaitolSetFLG = True
'If ws.Name = "*****1" Then TaitolSetFLG = False
'If ws.Name = "*****2" Then TaitolSetFLG = False
'If ws.Name = "*****3" Then TaitolSetFLG = False
If TaitolSetFLG = True Then
ws.Activate
ActiveSheet.PageSetup.PrintTitleRows = "$3:$7"
End If
Next
End Sub
お礼コメント
yumi-

お礼率 78% (39/50)

本当に、いろいろと 親切に、どうもありがとうございます!
幸い、30行は、全て、タイトルを入れることになっているのですが、もしも、入れては、いけない時は、ぜひ、’If・・・・で、やってみます。

おかげさまで、やってみて、出来た時の感動は、とっても、すごかったです!
ごちゃごちゃの毛糸が、一つの線になった感じです!

私も、勉強しなきゃって、思ってます。もしも、良いVBAの参考書が あったら、ぜひ、教えてくださいませんか?
お忙しいとは思うのに、早い回答の方、本当に、ありがとうございました。
投稿日時 - 2001-04-28 16:40:38
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

マクロを作ってみました。
各シートの行タイトル部分は同じ行(下では3から7行目)としています。それにシート名は連番とし、4シート(wsNum=4)で作っています。質問の答えになっていればいいですが。
各シートに名前がついている場合、シート毎に行タイトル部分が違っていても応用すれば対応できると思います。

Sub HeaderSet()
Dim ws As Worksheet 'ワークシート
Dim wsCot As Integer 'ワークシートカウンタ
Dim wsNum As Integer 'ワークシート数
wsNum = 4 '4シートにしています
'
For wsCot = 1 To wsNum
'シー名は連番を想定しています。
Set ws = Worksheets("Sheet" & wsCot)
ws.Activate

'全てのシートに同じ行を設定
ActiveSheet.PageSetup.PrintTitleRows = "$3:$7"
Next
End Sub
お礼コメント
yumi-

お礼率 78% (39/50)

お返事本当に、ありがとうございました。

実は、マクロを組むと言うこと、言語まで、よくわかっていなかったので、お礼が遅くなってしまいました。
一応、シート名が、すべて、違うので、シート名を できれば、1から30の数字に、一旦変換するマクロを組み込んでから、やってみようと思ってます。
もしも、できれば、そのプログラムも、教えていただけると ありがたいのですが。。。。
今一応、勉強してみては、いるのですが。。

よろしくお願いします。
投稿日時 - 2001-04-25 21:45:46

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

>できれば、そのプログラムも、教えていただけると ありがたいのですが。。。。
しばらくお待ち下さい。
  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

>私も、勉強しなきゃって、思ってます。もしも、良いVBAの参考書が あったら、ぜひ、教えてくださいませんか?
参考書を何冊も買ったことが無いので比較はできませんが、今はVBAの参考書もたくさんあるので、ご自分でわかり易いと思われた本がいいのではないでしょうか。パラパラ見る限り、どの本も余り変わりませんし。
私は、最初に買ったのがエーアイ出版のExcel95VBAのすべて。今はExcel2000でしょうか。よく使ったのが主婦の友社の逆引きExcel97/98VBA編。通勤電車内で読んだのが技術評論社のVBAプログラミング500の技でした。(これは少し毛色が違っていました) 逆引き・・・も重宝しましたが、いまはもっぱらヘルプを利用しています。
要は、基本を身に付け、数をこなすことではないでしょか。分からないときはOKWEBを使いながら (^U^)
また、多人数で使うものを作るため、自分なりにVBAを扱うときに心がけている点があります。
○ユーザにやさしい
 ・入力が簡単にできる
 ・余分な判断を不要にする
 ・入力に対してチェックを行い、原因と対処方法を表示する
    このため入力にはユーザーフォームを使うことが多い
○処理手順を明確にする
 ・人が行う手順を基本とする
 ・簡明な処理手順を作る
 ・余りに複雑になった処理は見直す
○入力、処理、出力でシートを分ける
 ・処理を簡明にするためにシートの機能を分離する
 ・エラーの復旧、仕様の変更に迅速に対応するため
○定数値、直接セル番地を使用しない
 ・モジュール内に変更の可能性がある定数値を置かない。一括して定義しておく。
 ・モジュール内に直接セル番地を使用しないで範囲名を使用する
 ・キー記録の使用は必要最低限にする
○妥協しないで手作業をなくす。
○人が手作業でできることは何でもプログラム化できると思って取りかかる。不可能を証明することは作るより難しい。作ったほうが速い。

こんなことを心がけて作っています。ご参考に。
これからもがんばって下さい。
お礼コメント
yumi-

お礼率 78% (39/50)

本当に、いろいろと、ありがとうございます!
とても、参考になりました。
いろいろと参考にさせていただいて、頑張ろうと思ってます!
投稿日時 - 2001-04-29 13:05:52
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ