プロが教える店舗&オフィスのセキュリティ対策術

度々お邪魔しております。。

rng as Range

rng = Worksheets("基本").Range("A1").CurrentRegion

このように構文を作ると型が違いますと怒られます。as Long にしてもだめでした。
表の範囲を取得したいと思っているのですが、、
それで、
Private Sub CommandButton4_Click()
Dim rng As Range
Dim i As Long
Dim j As Long
With Worksheets("基本")
i = .Rows(.Rows.Count).Row
j = .Columns(.Columns.Count).Column
rng = .Range("A1").Resize(i, j)

としましたが、オブジェクト変数またはwithブロック変数が設定されていませんとかえってきます。
設定しているように思えるのですが、、
何が違うのでしょうか、、

質問者からの補足コメント

  • へこむわー

    みなさま今回もご回答いただき誠にありがとうございます。

    set でございました。。。

    今回もベストアンサーを選ばせていただき、終了とさせていただきますが、今後とも、、を何回も増やしておりますが、、
     よろしくお願い申し上げます。

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/10/08 13:42

A 回答 (3件)

ここは set を使うところでは?



set rng = .Range("A1").Resize(i, j)
    • good
    • 0
この回答へのお礼

あ・・・・
ご回答いただきましてありがとうございます。
上記の文言が全てでございます。。

お礼日時:2020/10/08 13:34

> rng = Worksheets("基本").Range("A1").CurrentRegion



Range型変数への代入には Set 文を使うのでは?
http://officetanaka.net/excel/vba/variable/04.htm
https://docs.microsoft.com/ja-jp/office/vba/api/ …


> as Long にしてもだめでした。

CurrentRegion はRange型ですから、Long にする意味がありません。
・「型が違います」と出る→マニュアルで調べたらLong型だ→as Longにする
なら、まだ理屈が通ります(正しい修正とは限らないが)。
根拠もなくLongにしても治るわけがありません。
プログラミングは理屈の塊です。


エラーメッセージは、必ずしも「真の原因」を示すものではありません。
例えば「Nextに対するForがありません」というエラーメッセージが出ても
「メッセージ通りFor文が抜けている」
「むしろNextの方が不要」
「Next 変数名 の 変数名の対応が間違えている」
等のケースが考えられます。
エラーメッセージは参考に、「真の原因」を考えて修正しましょう。

= (代入)はLet文の省略形です。
https://docs.microsoft.com/ja-jp/office/vba/lang …
おそらく
・Letの変数はLong等が対象→Range型はLet文の対象外→「型が違います」
という流れだと予想します。
    • good
    • 0
この回答へのお礼

ご回答いただきましてありがとうございます。
あ・・・・ やってもた。。。の一言でございます。

ユーチューブで、2次元配列を1次元配列に閉じ込めるとかで、long 型の変数に、
CurrentRegion はRange型であっても、できるのかなと、、、いや、、理解が足りないのは明白なので、もう一度、動画見直します。

お礼日時:2020/10/08 13:36

元々 Resize したいサイズはどの程度なの?



質問文から推測すると、

>rng as Range
>rng = Worksheets("基本").Range("A1").CurrentRegion

dim rng as Range
set rng = Worksheets("基本").Range("A1").CurrentRegion

って事なのでは?
この回答への補足あり
    • good
    • 0
この回答へのお礼

いつもご回答いただき、まことにありがとうございます。

リサイズ、10,10ぐらいです。
今後、かなりのデータ量になりそう(以前お世話になった、システムのデータ量が、年内には、エクセルの限界を突破して、200万行ぐらいになりそうなので、、)こういうのもありかなと思って、やってみました。

Set ,,,あ。。。。 の一言でございます。

お礼日時:2020/10/08 13:39

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