Excel VBA質問箱 IV

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

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


7104 / 13646 ツリー ←次へ | 前へ→

【41206】currentregionについて FM 06/8/1(火) 20:17 質問[未読]
【41208】Re:currentregionについて ichinose 06/8/1(火) 21:10 発言[未読]

【41206】currentregionについて
質問  FM  - 06/8/1(火) 20:17 -

引用なし
パスワード
   こんにちは。

初心者のため、質問が簡単かもしれませんが
宜しくお願い致します。

一覧表はA3からD150で指定してあります。
Application Goto reference:="一覧表"

worksheets("商品").range("A3").Currentregion
を書き換えるとrangeクラスのselectメソッドが失敗しました。
とエラーがでます。
これからどんどんレコードが増えるので
下の方のコードにしたいのですが・・・
なぜなのでしょうか?
ご教授お願い致します。

【41208】Re:currentregionについて
発言  ichinose  - 06/8/1(火) 21:10 -

引用なし
パスワード
   ▼FM さん:
こんばんは。


まず、このエラー(rangeクラスのselectメソッドが失敗しました)
再現するまでの記述がちょっと足りません。

この記述でFM さんよりも初心者の方が
FM さんが 何に悩んでいるのか、わかるとは
私にはとても思えません。

こういう場合は、この投稿を見ている方は
FM さんの記述どおりにブックを作成し、
操作すれば、おっしゃっているエラーが誰でも再現できる記述を
しなければなりません(少なくともその努力を惜しんではいけません)。


Excelを起動して新規ブックに問題のエラーを再現することを考えます。


・新規ブックSheet1というシートのセルA3〜D150まで適当な文字または数字を
 隈なく入力してください(データは何でも良いです)。

・このSheet1のセルA3〜D150を選択してください。

・選択した状態で「挿入」---「名前」----「定義」とクリックし、
 「名前の定義」ダイアログを表示させます。

・既に参照範囲は「=Sheet1!$A$3:$D$150」と表示されていますね?

・名前は「一覧表」(両端の「」は除く)と指定してOKボタンをクリックします。


次にVBAです。

標準モジュールに
'================================
Option Explicit
'============================================
Sub test1()
  Application.Goto "一覧表"
End Sub
'===========================================================
Sub test2()
  Worksheets("sheet1").Range("A3").CurrentRegion.Select
End Sub


これで準備はOKです。

Sheet1というシートをアクティブにして

test1、test2を実行してみてください。
test1,test2どちらも正しくSheet1のセルA3〜D150を選択しますよね!!


次にSheet2というシートをアクティブにした状態で
test1、test2を実行してみてください。

test1は正常にSheet1のA3〜D150を選択しますが、

test2は、「1004 rangeクラスのselectメソッドが失敗しました」
というエラーになります。


Sub test2()
  With Worksheets("sheet1")
    .Activate
    .Range("A3").CurrentRegion.Select
    End With
End Sub

こんなふうに修正すると正常にSheet1のA3〜D150を選択します。


自分が抱えている問題を説明するのは大変です。

でも、それをすることは

プログラミングに無駄にはなりませんよ!!

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