- VBAなんでも質問スレ
780 :デフォルトの名無しさん[]:2014/09/07(日) 17:32:00.80 ID:tzy47GW2 - id 名前 年齢 のような表があって、
それに何かしらの処理をプログラムがあるとします。 そのプログラムは以下のように列がベタ打ちになっています。 range("A" & i).value 列を以下のように挿入したとき id 苗字 名前 年齢 プログラムのベタ打ち部分を変更しなくてはなりませんが、 これを自動で認識してくれるようなベストプラクティスはありませんでしょうか?
|
- VBAなんでも質問スレ
784 :デフォルトの名無しさん[]:2014/09/07(日) 20:12:39.88 ID:tzy47GW2 - >>781
いやいや、range("B" & i) を cells(i, 2)にしたところで何も変っておらんでしょw
|
- VBAなんでも質問スレ
788 :デフォルトの名無しさん[]:2014/09/07(日) 23:17:03.39 ID:tzy47GW2 - >>786,786
回答ありがとうございます。 constはそれなりに有用だと思いますけど、 ベタ打ちの1元管理に過ぎず、あまり好きな手法じゃありません。 列を削除した時など、A列とかで指定でされているため そのまま動作し、バグの温床ともなりそうです。 個人的には、786の手法がベストだと思いました。 しかし、ここで問題点がもう1つ。 range("名前")ですが、例えば、他のexcelファイルから 本体のexcelファイルを操作している時など、 activeworkbookが自身であるか不確実な状況だと誤動作する可能性がありますよね。 thisworkbook.range("名前")とできればいいんですが、 シートオブジェクトじゃないと駄目だし、 worksheet(1).range("名前")とかだとせっかく名前定義してんのになんでシートの指定が必要なの? って感じだし、なんでrangeを自分自身じゃなくてactiveworkbookに実行するんだマイクロソフトォォォって感じなんですが、 こんなときスマートな方法があれば教えてもらいたいです。 あらかじめ、activateしておくぐらいですかね?
|