プロが教えるわが家の防犯対策術!

マクロ
A1をアクティブセルにして
A:H列の行を選択するにはどう書けばいいのでしょうか?

この場合A1:H1が選択されればいいのですが

range("A:H " & activecell.row).select
みたいな感じだとエラーになってしまいます。

A 回答 (3件)

cells(activecell.row, "A").resize(1, 8).select


とか。
range("A" & activecell.row & ":H" & activecell.row).select
とか。

ごく丁寧に書くと(参考に異なる2つの書き方を使って書いてあります)
with worksheets("シート名")
.range(.range("A" & activecell.row), .cells(activecell.row "H")).select
end with
とかになります。

application.intersect(range("A:H"), activecell.entirerow).select
とかでも同じ結果を得ますね。



あまりお薦めしませんが一応参考に
range("A" & activecell.row , "H" & activecell.row).select
とかでも,可能は可能です。
#この書きぶりで楽しようとして失敗して寄せられるご相談は結構多いです。
    • good
    • 0

Range("A1").Activate


Range("A" & ActiveCell.Row & ":H" & ActiveCell.Row).Select
    • good
    • 0

変数をとればよいです。


>range("A:H " & activecell.row).select

楽なのか面倒なのかは知りませんが、1行ずつ確認するということが、マクロの基本ですよね。
オブジェクトのプロパティに、直接、他のオブジェクトを入れることには、多少の問題があります。必ずしも、そのプロパティの中で、二重のプロパティを受け付けるとは限らないから、そういう癖は、ワンランク上を目指すなら辞めて、変数を使いこなすことですね。

--
 Dim i As Long
 i = ActiveCell.Row '←オブジェクトからプロパティを取るのは一回で済みます。
 Range("A" & i, "H" & i).Select '←VBAの機能で、型のキャスティングが働いいます。(イレギュラー)

キャスティング
"A" & i → 数値が文字化している

 これを、Range(Cells(i,1), Cells(i,8)) にしたら、キャスティングはなくなりますが、今度は、RangeのプロパティとCellsとは、結びつきがありませんので、RangeとCells をWith ActiveSheet で、結ばなくてはなりません。
 
 また、With Worksheets("Sheet1") として、シートを特定化すれば、エラーが発生してしまいます。なるべく、一本、筋を通してあげなくてはならいわけです。特殊な選択をする時に、一本で通してあげないと、上手く行かないことがあります。
--
私自身は、こんな書き方をしています。真似る必要はありません。
 ActiveCell.EntireRow.Range("A1:H1").Select
長いコードの時に、位置関係を明示的に残しておくためです。

簡単なようでいて、その中でしていることはむつかしい物が存在していることがあります。
なお、識別子(Range, Cellsなど、VBEditor上で色が変わるところ)は、大文字・小文字は区分けしてください。それをおろそかにしていると、長い間には失敗をすることがあります。他の言語に精通している人なら、なおさらなのです。VBAは、その点曖昧なのです。必ずしも、最初の識別子が、必ずしも大文字でないこともあります。以下は、武藤玄氏のサイトで、私は、全面的に賛成しているわけではありませんが、参考になる部分が多いです。変数のプレフィックスは、積極的に使用することはありませんが、変数の2バイト文字は辞めましょう。

参考URL:http://home.att.ne.jp/zeta/gen/excel/c04p15.htm
    • good
    • 0

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