|    | 
     >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 = "→" 
といった書き方もできますね。 
 
 | 
     
    
   |