- ベストアンサー
EXCEL 2010 変動する範囲指定の方法
- VBAを使用してEXCEL 2010で変動する範囲を指定する方法について教えてください。
- 一覧表の範囲を他人が操作して行を挿入・削除した場合に、各ブロックの数値が変動してしまう問題に対処する方法を教えてください。
- 詳細な範囲の指定方法や、ブロック間の空白行を考慮した範囲の取得方法についても教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
[Ctrl]+[F3]名前の定義で定義した名前を Range("定義した名前") と指定するのも一案です。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
とりあえず: sub macro1() dim Target as range dim Rng as range set target = range("B34") do until target = "" activesheet.autofiltermode = false application.intersect(target.currentregion, range("B:B")).autofilter set rng = activesheet.autofilter.range ’do your work rng.interior.colorindex = 4 set target = target.offset(rng.rows.count + 2) loop end sub #ご質問範囲じゃないのでフォローはしませんが、他の人が「何をするかわからない」のに、「途中に2行空いている」とか「そもそもB34から始まってる」とか「ブロックの範囲はcurrentregionで大丈夫(=これも途中に2空行?と同じ)」のは絶対だとか、ちょっと危ない橋を渡っているように見えます。
お礼
こんにちは。 ご回答ありがとうございました。 Range("B34:B39")は rng.rows.count =6 で取得できていましたが 次のブロック以降は set rng = activesheet.autofilter.range のところで実行時エラー91 「オブジェクト変数またはWithブロック変数が設定されていません」と出てしまいました。 'do your work の部分ではtureの値(数)を拾っています。 別の投稿で2週間回答がつかなかったため,少々くじけていました。 いただいたコードをもとに試行錯誤してみます。 ありがとうございました。
補足
>#ご質問範囲じゃないので 「途中に2行空いている」のは一覧表の絶対的な決まりなので乱れることはありません。 「B34から始まっている」のも大丈夫です。 ですが,それ以外は挿入,削除が考えられるため困っていました。 >「ブロックの範囲はcurrentregionで大丈夫 そうは思っていませんが,いろいろ探していく中で唯一見つけた方法でした。 初心者の私に作成を依頼した方にご指摘事項は伝えたいと思います。「こんな難しいこと無理」と思うことが多すぎて。 ネットワークを使ってダウンロードする方法もWEBから見つけてできたのですが,B列のチェックボックスでtureの値の時だけ同行のC列とD列にあるハイハーリンク文書をネットワークの指定場所にファイルを保存するなんてことを行っています。 この指定範囲のところで躓きました。 この「拾った値のみダウンロード」もまだできていません。 なのに期限は9月末。 プロ級の方でも難しいことなのでは?と思ってしまいます。 これを初心者でいきなりでしたので。 かなり愚痴になってしまいました。すみません。 こんな状況で精神的に追い詰められていましたのでご回答があり,少し救われました。ありがとうございました。
お礼
こんにちは。 ご回答ありがとうございました。 こちらの方法,行挿入しても,行削除しても,自動的に範囲が変動するんですね。 もう少し,試行錯誤してみたいと思います。 ありがとうございました。