エクセルマクロ・VBA達人養成塾 小川です。
キューバ旅行記、その18です。
SOCIALISMOとは、社会主義、社会主義運動の意。
街中のいたるところに、こういうスローガン的な文言の書かれた壁、看板等を見かける。
現地の人たちは、横断歩道もないところで、車の通る道をどんどん渡る。
学校。
JUNTO A FIDEL Y RAUL REVOLUCION
「フィデル、ラウルと一緒に – 革命」
フィデルは、ついこの間まで国家元首だったフィデル・カストロ。ラウルは、一緒に革命に参加したその弟で、今の国家元首、ラウル・カストロのこと。
エクセルに関して、ときどき出てくる議論。
エクセルの列名表記は、「標準の形式がいいのか、R1C1形式のほうがいいのか」。
これに、「では、マクロを書くときには?」という話が絡むと、さらにややこしくなるよう。
僕も、ときどき意見を求められるのですが…。
僕の意見としては、「標準形式で、いいんじゃない?」という感じです。
R1C1形式にするメリットがあるとすると、
○各列が、左から何列目にあるのかを直感的に理解しやすい
ということのようですが。
どの列が左から数えて何行目か知りたければ、以下のコードでいつでも知ることができる。
Debug.Print Range(“F1”).Column
End Sub
あと、ついでに書くと、横への連続計算をするときに簡単なので、セルを指定するときには、Range より Cells を使いましょう、という人もいるが、僕は、 Range を使っています。
セミナーで教えるときも、 Range です。
何故かというと。
別シートにあるセルを指定するときの記載が容易というのもあります。
以下の例では、同じ、シート3のセルA1~B3に値を設定しようとしています。
どちらのほうが、見た目、書きやすそうでしょうか。
Worksheets(“Sheet3”).Range(“A1:B3”).Value = 5
Range(Worksheets(“Sheet3”).Cells(1, 1), Worksheets(“Sheet3”).Cells(3, 2)).Value = 3
End Sub
「Cellsを使うと横方向へのくり返しができる」というのも、Cellsを使うメリットとして言われる方もいますが、 .Offset を使えば、Rangeでも可能です。
以下の要領。
Dim c As Integer
For c = 0 To 10
Range(“A5”).Offset(, c).Value = 1
Range(“A6”).Offset(, c).Value = 2
Range(“A7”).Offset(, c).Value = 3
Range(“A8”).Offset(, c).Value = 4
Range(“A9”).Offset(, c).Value = 5
Next
End Sub
もっとも、「横方向へのくり返しを大量に行うエクセル表がある」というような場合だと、そもそも、マクロ以前に、そのエクセル表を使った業務プロセス自体に問題があるケースがほとんどです。
エクセルマクロ・VBA達人養成塾、12月末~3月までの日程を追加しました。
年末特訓も用意しています。