Excel VBA質問箱 IV

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

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


12059 / 13645 ツリー ←次へ | 前へ→

【12599】範囲選択−右端のセル くまっちょ 04/4/8(木) 23:48 質問
【12601】Re:範囲選択−右端のセル ichinose 04/4/9(金) 7:34 回答
【12602】Re:範囲選択−右端のセル ichinose 04/4/9(金) 7:49 発言
【12647】解決!範囲選択−右端のセル くまっちょ 04/4/9(金) 17:30 お礼

【12599】範囲選択−右端のセル
質問  くまっちょ  - 04/4/8(木) 23:48 -

引用なし
パスワード
   はじめまして。

このようなデータがあるとします。
  A B C D E
1 20 47   14
2 

次の操作をしたいと思います。
1.1行目でデータの入っている一番右端のセル(この場合D1)を
「atai」と定義
2.A1〜「atai」の範囲を選択

そこで、次のようなマクロを組んだのですが
「オブジェクト変数又はWithブロック変数が設定されていません」と
エラーになってしまいます。

どこをどう直したらよいのでしょうか?
よろしくお願いします。

--------------------------------------------
Sub 選択()

Dim mycl As Long, atai As Range

mycl = ActiveSheet.Columns.Count
atai = ActiveSheet.Cells(1, mycl).End(xlToLeft)

ActiveSheet.Range("A1", atai).Select

End Sub
--------------------------------------------

【12601】Re:範囲選択−右端のセル
回答  ichinose  - 04/4/9(金) 7:34 -

引用なし
パスワード
   ▼くまっちょ さん:
おはようございます。

>--------------------------------------------
>Sub 選択()
>
>Dim mycl As Long, atai As Range
>
>mycl = ActiveSheet.Columns.Count
>atai = ActiveSheet.Cells(1, mycl).End(xlToLeft)
>
>ActiveSheet.Range("A1", atai).Select
>
>End Sub
>--------------------------------------------

上記のコードだとセルD1に「D1」と入っていれば
動きますけどね!!

>atai = ActiveSheet.Cells(1, mycl).End(xlToLeft)

だとataiには、14が入ってしまいますので、↑を

Set atai = ActiveSheet.Cells(1, mycl).End(xlToLeft)

として下さい(まとめた記述方法もありそうですが・・)。

確認してみて下さい

【12602】Re:範囲選択−右端のセル
発言  ichinose  - 04/4/9(金) 7:49 -

引用なし
パスワード
   訂正です。
あっ、りんさん、久しぶりですねえ。

>おはようございます。
>
>>--------------------------------------------
>>Sub 選択()
>>
>>Dim mycl As Long, atai As Range
>>
>>mycl = ActiveSheet.Columns.Count
>>atai = ActiveSheet.Cells(1, mycl).End(xlToLeft)
>>
>>ActiveSheet.Range("A1", atai).Select
>>
>>End Sub
>>--------------------------------------------
>
>上記のコードだとセルD1に「D1」と入っていれば
>動きますけどね!!
↑これうそです。
Dim atai as Range

とataiをちゃんと宣言されているのでエラーになっちゃいますね!!

ataiという変数をVariantで宣言すればの話です。

Dim atai as Range

が「いけない」という意味ではありません。
むしろ、この場合は、これでよいと思います。

【12647】解決!範囲選択−右端のセル
お礼  くまっちょ  - 04/4/9(金) 17:30 -

引用なし
パスワード
   りんさん、ichinoseさん、早速のお返事ありがとうございます。

--------------------------------------------
Sub 選択()

Dim mycl As Long, atai As Range

mycl = ActiveSheet.Columns.Count
Set atai = ActiveSheet.Cells(1, mycl).End(xlToLeft)

ActiveSheet.Range("A1", atai).Select

End Sub
--------------------------------------------
と、"Set"を追加したらできました!
Setというのがあるんですね、、、知りませんでした。
単純にdim-asだけじゃだめなんですね。

本当にありがとうございました。またよろしくお願いします。

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