[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA:別のページが印刷されてしまいます』(じゃぽね)
VBA初歩的なマクロ
いつもお世話になっております。少しづつマクロを勉強しているところですが、また わからないとことがあり、宜しくお願いします。以下のような手順を記録させるだけの マクロなのですが、印刷したいページではなく別のページが印刷されてしまいます。 印刷したいのは1ページ目でアクティブになっているはずなのですが、印刷されません。 非表示等をつかっているのが理由なのか分かりませんがよろしくお願いします。
Sub ko( )
ActiveSheet.Unprotect
If Range("f8") = "" Then Rows("8:9").Select Selection.EntireRow.Hidden = True End If If Range("f10") = "" Then Rows("10:11").Select Selection.EntireRow.Hidden = True End If
Columns("E:E").Select Selection.EntireColumn.Hidden = True
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True
Rows("8:47").Select Selection.EntireRow.Hidden = False
Range("E8").Select
Columns("D:F").Select Selection.EntireColumn.Hidden = False
ActiveSheet.Copy after:=ActiveSheet Range("E8:E27").Select Selection.ClearContents Range("k7").Select ActiveCell.FormulaR1C1 = DateAdd("m", 1, ActiveCell.Value) ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("E8").Select
少しコードをまとめてみました。
Sub ko()
With ActiveSheet .Unprotect
If .Range("f8").Value = "" Then .Rows("8:9").EntireRow.Hidden = True End If
If .Range("f10").Value = "" Then .Rows("10:11").EntireRow.Hidden = True End If
.Columns("E:E").EntireColumn.Hidden = True .PrintOut From:=1, To:=1, Copies:=1, Collate:=True .Rows("8:47").EntireRow.Hidden = False .Columns("D:F").EntireColumn.Hidden = False .Copy after:=ActiveSheet .Range("E8:E27").ClearContents .Range("k7").FormulaR1C1 = DateAdd("m", 1, ActiveCell.Value) .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True .Range("E8").Select End With
誤動作の原因となるので、標準プロパティは省略しない方が良いと思います。 普通に処理するときにはselectやActivateは必要ないです。 主に対象シートなどを表示させるときに使用します。
(INA)
[INA]さん[標準プロパティ]というのは何でしょうか? (kazu)
(INA)さんいつもありがとうございます。わたしは本当にここでマクロを教わって います。感謝しております。これから取り組んでみます。 向学のために(kazu)さんのものについても教えていただけないでしょうか。 (じゃぽね)
説明不足ですみません。 MSでは「既定のプロパティ」と記述されておりました。 標準コントロールなどで、省略したときに適用されるプロパティです。 以下のページが参考になると思います。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcn7/html/vacondefaultproperties.asp
If Range("f8") = "" Then
Rangeの場合は .Value が 既定のプロパティ なので、 省略して Range("f8") = "" としても動作しますが、 まれに誤動作の原因となるので、Range("f8").Value = "" の方が良いと思います。 それに省略しない方が、誰がみても分かり易いので 私は面倒でも記述するようにしています。 (INA)
[INA]さん説明ありがとうございます。 参考になりました。 (kazu)
博学者のINAさんこんばんわ。 チョッと教えておくんなはれ。 Range("f8")=""で希に誤作動の原因となるっちゅうのんはどんなケースで起きまんのや ろ? 規定値がvalueになっとって,なお誤作動が起きるっちゅう事は、エクセル側はそれを承 知でvalueを規定値にしたんでっしゃろか。 私のように下手なマクロ書いてますと、実際ようこけまんねんけど、例えばCells(i,n) =と書くとiやnの値はもちろんの事Cells(i,n)の値もチップテキストで教えてくれます わなぁ。ところが=Cells(i,n).Valueではiとnしかチップテキストが出てけえしまへん わ。これだけやなしに、For Each C ...でも C.Valueと書いたらな〜にも教えてくれ まへんけど、Cだけなら何処を検索しとるか、ちゃ〜んと教えてくれますわ。
まぁ、そら、クイックウォッチで確かめられへん事おまへんのやけど、そんな面倒 なコトするよりそのままのコードで確認でけた方がはるかに手間が省けますし、更には .Valueと書く手間も省けると思いまんねんけど、私の考え間違うとりまっしゃろか? ただし、これはINAさんのおっしゃる誤作動が起こらんという条件を前提にしてまんね んけど、さあ、これが誤作動を引き起こすとなったら私しゃRange("f8")=とレスつけら れへん事になりますさかい、是非、是非教えておくんなはれ、お願いします。
因みに、わたしの仕入れた「10日で覚えるVBA」にはついぞ.Valueで書くべしとは 載ってまへんでしたわ。 .Valueに迷う(弥太郎)
>Range("f8")=""で希に誤作動の原因となるっちゅうのんはどんなケースで >起きまんのやろ? 具体的なケースは忘れてしまいましたが、VBAを始めてから色々な掲示板を読んでいて、 「規定のプロパティ」を記述することで、不具合を解消できたという質問が 過去半年内くらいに3件ほどありました。 今度、見つけたらご報告いたします。
Findメソッドも引数を省略すると、誤動作することが多いですし、 EXCELのバグのようなものは結構多いと思います。 誤動作する正確な状況が分からない以上、その要因は潰しておきたい ということで、省略しないようにしています。
チップテキストというのは、ctrl+j や ctrl+i の入力補助のことですよね? (INA)
INAさん、おおきに。 出かけとりましたさかい、返事遅うなりました。深謝。 例の誤作動の件、ご自分が実際に遭遇なさったわけではおまへんねんなぁ。わたしゃ また、てっきりINAさんの実体験を語っておられるモンと思うとりましたわ、えぇ。
>過去半年内くらいに3件ほどありました 正直コレは由々しき問題でんなぁ。Rangeだけの問題や無うて.Valueの規定値はみんな アブナイ事に通じまっせ、ホンマに。
私もそこそこ複雑なマクロ(なんちゅうて大したこと無い)を組んだ経験がおますけど 幸か不幸かそんな目に遭うた事はおまへんわ。 >今度、見つけたらご報告いたします 是非、お願い致します。私も発見したらお知らせしますわ。
>チップテキストというのは デバッグの際、変数やRangeにマウスポインター合わせると長方形の箱に入った文字列 が表示されますわ。それが変数やRangeの中身を耳打ちしてくれまんねんで。大変重宝 してますわ、えぇ。 あっ、あれってチップテキストって言いまんのやろ?(違う?) ほな...(弥太郎) 追伸、 わたしゃ、誤作動、エラーが確認でけるまでRange("f8")=で通しまっさ。
(INA)さん ありがとうございました。おかげさまで思ったとおりに実行されました。 他の方が私のマクロで同じような誤動作が発生するのかはわかりませんが、いずれに しても解消されました。言葉足らずで恐縮ですが、改めて感謝申し上げます。(じゃぽね)
INAさんこんばんわ。 このスレ、.Valueでエラーが出る絶好の検証コードやと思うて早速.Valueを書いたんと それを除いたコードを試してみましたんやけど、結果はどっちもOKですわ。 そう簡単にはつかまえられしまへんわなぁ、バグ程度や言うのに。残念。 ほな...(弥太郎)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.