|
>1.Valueプロパティは文字列だけではなく、数字は数字として処理してくれると考えていいですか?
そうです。
ヘルプを見ると、
>Range.Value プロパティ
>指定されたセル範囲の値を表すバリアント型 (Variant) の値を設定します。値の取得および設定が可能です
とあります。Variant型ですから、数値も文字列もOKです。
MsgBox TypeName(n)などとすると、Doubleと表示されます。(数値のデフォルトはDoubleです)
ただし、この場合、
>Cells(3, 21)と Cells(3, 23)には日付の日にち部分の数字
ということが解っているわけですから、
Dim n As Long
Dim m As Long
と型宣言しておくべきです。(下記補足(1)参照)
> 2.For A = n + 5 To m + 3 のように変数の中に変数を入れるのは問題はないですか?
問題ありません。
(なお、counterのstartとendの値は一度設定されるだけで、
繰り返しの都度計算されるわけではありません。)
-----------------
なお、
(1)
変数は必ず宣言すべきです。
これがないと、変数のタイプミスがあっても、発見が遅れます。
宣言があれば、宣言せずに使った変数には警告が出ます。
また、特定の型にしておけば実行効率が上がると言われています。
Option Explicit
を一行目に挿入するようにして下さい。
そうすれば、今回のような未宣言の変数には警告が出ます。
また、
ツール − オプション − 編集 で
「変数の宣言を強制する」にチェックを入れておけば、
モジュールを作成した時点で、Option Explicitが自動的に挿入されるので、
手間が省けます。
(2)
繰り返しに使う変数は、Aといった変数名ではなく,i,j,k,l,m,nといったものを
使うのが普通です。これは多くの人が使う慣例のようなものです。
iは1,l と誤認しやすいので、一つだけの繰り返しなら、私は k を使うことが多いですね。
(3)
最後の繰り返しのところは、
Range(Cells(3, n + 5), Cells(3, m + 3)).Value = "→"
といった書き方もできますね。
|
|