Cloudflareレジストラに所有ドメインを移管してみた

引っ越しの挨拶
©いらすとや.

Cloudflareのプロクシ(CDN)を使っている人はそれなりに多そうだが、レジストラを使っている人は多いのかな?現在はCloudflareのレジストラでドメイン取得もできるようになっている?かもしれないが、元々他所のレジストラで取得したドメインをCloudflareに移管することだけができるようになっていて、ドメインの移管に慣れていない人にとっては何をどうしたらよいのかよくわからなかったかも。
「がとらぼ」の中の人はドメインを移管するのは日常茶飯事で、普段はNamecheap, Hover, Internetbs、日本だと「お名前.com」のようなレジストラを使用していてそれらのレジストラ間でドメインを移管させているが、今回初めてCloudflareへのドメイン移管を行った。基本的にはCloudflareではない他所のレジストラ間でのドメイン移管とほぼ同じ要領で移管できた。移管の部分ではCloudflareだから何か特別というのはない。ドメインの更新料が他所のレジストラより「お安め」っていうだけ。ただし、Cloudfalreでは他所のレジストラとは違い、Cloudflareで対象ドメインのDNSを管理できる状態にしないとドメイン移管手続きができない。

今回はCloudflareのレジストラとDNSだけを使用することにする。DNSは「ビジネス」プラン以上ではCloudflare以外のDNSサーバ(自前のとか)を選択して利用できるようだが今回は「無料」プランを利用するのでCloudflareのDNSを使わざるをえない。しかし、これまで自前のDNSサーバ(Bind9)は異常にアクセスが増えると不甲斐なくも落ちてしまうことが度々発生していたので耐性高めで良さそうなところを探していたということもあり、CloudflareのDNSなら文句ないかも。サーバ自前教の信者の人でなければDNSくらいは他所にまかせても良いよね?

DNSサーバの切り替え

Cloudflareにドメインを移管 1
手順1:
Cloudflareではドメインを移管する前にCloudflareでその移管対象のドメインのDNSを管理できる状態にしなくてはならない。(他所のレジストラは逆で、そのレジストラへの移管後でないとDNSを利用できるサービスがあったとしてもそのDNSを利用できない)
今回はCloudflareのプロクシ等の他のサービスを利用していないドメインをCloudfalreに登録してDNSを登録するところから。
Cloudflareのアカウントを作る部分は省略して、Cloudflareにログインした状態でトップページ(ホーム)から「サイトを追加」をクリック。

Cloudflareにドメインを移管 2
手順2:
Cloudflareに移管する予定のドメインのDNSを登録するので「無料」プランを選択する。ある程度の規模のウェブサイトでプロクシサービス(CDN)などの利用を検討しているなら「Pro」プラン以上の選択もあるかも。

Cloudflareにドメインを移管 3
手順3:
DNSを登録する(その後にドメインを移管する)サイトのドメイン名を入力して「サイトを追加」をクリックする。

Cloudflareにドメインを移管 4
手順4:
入力したドメイン名から現行のDNSレコードが自動的に抽出される。これが完全に行われるなら非常にラクだが、これまでに試した範囲ではこのDNSレコードの抽出はレコード数の多い少ないに関係なくスッカスカに抜けてしまうので、自動にまかせて安心するととんでもないことになるかも。必ず現行のDNSレコードと突合して漏れのないように。

Cloudflareにドメインを移管 5
手順5:
上の2つの手順で新規ドメインを登録する場合ではなく、Cloudflareに登録済みのドメインの場合はCloudflareのトップページでドメインを選択してから「DNS」の設定をする。(画像の赤枠のどちらか)
ただし、この場合はドメインのDNSは設定済みな筈なのでここで選択してDNS設定を行う必要はないかも。

Cloudflareにドメインを移管 6
手順6:
(手順4と同じ状態。)
Cloudflareに登録済みのドメインの場合、DNSの設定画面でレコードリストが表示されるので必要に応じてレコードの追加や修正を行う。大抵の場合は修正は要らない筈だと思うけど。

Cloudflareにドメインを移管 7
手順7:
レコードの追加で「ホスト名とIPアドレス」の場合は、「レコードの追加」ボタンをクリックして、タイプにAまたはAAAA、ホスト名はFQDNではなく本当にホスト名だけ、IPアドレスはAレコードならIPv4アドレス、AAAAレコードならIPv6アドレスを入力。プロキシのスイッチはデフォルトはオンだけどCloudflareのプロクシを使うのでなければオフにする。DNSだけを使うならオフで。
「保存」ボタンをクリックする。

Cloudflareにドメインを移管 8
手順8:
CAAレコード登録はわかりにくい。
example IN CAA 0 issue "letsencrypt.org" の場合
「タイプ」はCAA、「名前」にホスト名を入力、「TTL」は自動(初期値)、「タグ」は特定のホスト名のみ許可する(初期値)、CAドメイン名はSSL/TLS証明書の発行ドメイン名(Let's Encryptならletsencrypt.org)を入力。
「保存」ボタンをクリックする。

なお、Cloudflareのプロクシサービスを使用する場合はそのホストのCAAレコードを下手に設定するとCloudflareのTLSが有効化できなくなるので十分に注意

Cloudflareにドメインを移管 9
手順9:
新しくドメインをCloudflareに登録する場合は手順4の画像の左下の「続行」でこの画面になる。
現行のDNSサーバがリスト表示される。それは現在のレジストラに登録されているもの。これらのホストを全て現行のレジストラのDNSサーバリストから外す。代わりにCloudflareのDNSサーバ2つを現在のレジストラに登録する。(それは手順11へ)
CloudflareのDNSサーバ2つをメモったら一番下の「完了しました。ネームサーバをチェックしてください」を押す。レジストラ側のDNS登録変更前でも可。
登録済みドメインではこの画面にはならないので手順11へ。

Cloudflareにドメインを移管 10
手順10:
まだ現行のレジストラでDNS登録変更をしていない。現行のレジストラでDNSの変更登録をするまではCloudflare側で何を設定しようが何も効果はない。また、レジストラでのネームサーバの変更はすぐに反映せず1時間から1日程度かかると思った方が良い。そこで、とりあえず翌日くらいまでCloudflareの方は放置で。
「推奨事項をスキップ」をクリックするかブラウザを閉じる。
なお、今回のやり方では権威DNSサーバは変更になるがゾーンデータは(基本的には)変わらないので「所謂ところの浸透」という部分では神経質になる必要はないので(次のDNSサーバの登録変更後に)Cloudflare側でDNSサーバの変更を認識できたらTTL切れを待つことなく次に進んで良いと思う。(「浸透」という言葉が嫌いな人はスミマセン)

Cloudflareにドメインを移管 11
手順11:
Cloudflareの登録済みドメインの場合は、現在のレジストラのDNSサーバを変更済みの筈だが、そうではない場合はDNS設定画面のDNSレコードのリストの下にCloudflareから割り当てられたDNSサーバが2つ表示されるのでそれをコピーして現行のレジストラに登録することになる。(次へ)

Cloudflareにドメインを移管 12
手順12:
現在利用中のレジストラ(ここでは仮に日本の「お名前.com」とする)でDNSサーバの登録を変更する。
上でCloudflareに登録したドメインを選択して、そのドメインに登録済みのDNSサーバを全て外して変わりにCloudflareのDNSサーバを登録するのだが、「お名前.com」の場合は現在のDNSを外すというのはなくて「ネームサーバーの選択」で「その他」を選択して「その他のネームサーバーを使う」の欄のネームサーバー1とネームサーバー2にCloudflareのDNSサーバを入力する。指定された2つ以外のDNSサーバは登録してはダメ。
最後に右下の「確認」をクリック。(忘れやすいので注意)

Cloudflareにドメインを移管 13
手順13:
(レジストラでのDNSサーバの変更は設定後にそれが反映されるまで時間がかかることがあります)
Cloudflareの側では自動的にDNSサーバを確認することを繰り返していて、現行のレジストラでDNSサーバの登録を変更した後にそれが適用されると検知される。それまではCloudflareのメイン画面ではこのような画面。

Cloudflareにドメインを移管 14
手順14:
1つ前の画面でドメイン名の枠をクリックするとこのような画面になる。
レジストラでDNSサーバの変更が完了するまでは現在レジストラに登録されているDNSサーバを外してCloudflareのDNSのサーバを登録しろという内容が表示される。
この画面が表示される間は次に進めないので暫く待って再びCloudflareのトップ画面を表示する。ドメインの欄が「ネームサーバーの更新を保留中」だと未完了。

Cloudflareにドメインを移管 15
手順15:
ドメインの欄が「アクティブ」になればDNSサーバの登録変更が完了。

Cloudflareにドメインを移管 16
手順16:
1つ前(手順15)でドメインの枠をクリックすると「素晴らしいニュースです!Cloudflareでは現在のお客様のサイトを保護しています」に変わっている。

ここまでで、慣れていない人にとってはようやくDNSサーバの切り替えが終了。慣れてる人にとってはウェブ上でチョイチョイっと変更で済むので難しくはないよね。
次がメインとなるドメインの移管。こちらも他所でドメインの移管ってのをやったことがある人にとっては(大枠でやり方は変わらないので)難しくはないが、やったことが無い人にとっては根本的に何をどうすればよいのか判らないところ。

ドメインの移管

Cloudflareにドメインを移管 17
手順17:
Cloudflareにログインした状態のトップページで「レジストラ」をクリック。画像の2つの赤枠のどちらでも。

Cloudflareにドメインを移管 18
手順18:
レジストラ画面の左列のメニューで「Transfer」(移管)をクリックする。

Cloudflareにドメインを移管 19
手順19:
Cloudflareに登録済み(DNSサーバの移転済み)のドメインが表示される。
画像では取得から間がないドメインが表示されていて、これは移管ができないため「ドメインを確認する」ボタンが押せない状態で次に進めない。
また、Cloudflareのレジストラで取扱いのできないTLDがある。この場合は、そもそもこの画面に移管が可能なドメインとして表示されない。たとえば.jpドメインはCloudflareで取扱のないTLDなのでCloudflareでは新規取得はもちろん移管もできない。Cloudflareレジストラで取扱いできるTLDのリスト
DNSサーバの移転やプロクシ機能は関係ないのでCloudflareレジストラで取扱いのないTLDでも利用できます。
とにかく、移管したいドメインを選択して右下の「ドメインを確認する」をクリック。
今回は例示できる移管可能なドメインの余りが無くこの後幾つかの画面のスクショが撮れていません。スミマセン。

Cloudflareにドメインを移管 20
手順20:
Cloudflareのブラウザ画面はそのままにして、別のブラウザ窓を開き、移管元(引っ越し前の)レジストラの管理画面(ここでは「お名前.com」)を開く。お名前.comでは「お名前.com Navi」にログインして「ドメイン」の画面を表示する。ドメイン一覧からCloudflareに移管させたい(DNSサーバ登録変更済みの)ドメイン名をクリックする。他のレジストラでも管理画面で同様にドメイン一覧から移管させたいドメインを選択する。

Cloudflareにドメインを移管 21
手順21:
「お名前.com Navi」ではドメインを選択して表示される「ドメイン詳細」の画面にAuthCodeが表示される。(デフォルト非表示なのでボタンで表示)
その文字列をコピーする(またはメモる)。
他所のレジストラでもドメインの詳細のような画面にAuthCodeが表示されるか移管関係の画面にAuthCodeを表示する機能がある筈。

画像無し:
また、移管元のレジストラ(お名前.comやその他のレジストラ)で移管を防止するためのロック機能をオンにしている場合はその機能をオフにする。

画像無し:
Cloudflareのブラウザに戻り、コピーしたAuthCodeをペーストまたは入力する。AuthCodeを利用してCloudflareレジストラが移管元のレジストラと移管の手続きを行う。これは、レジストラ間で行われるのでドメインオーナー(私達)はすることは殆ど無くて「移管の承認」(次)くらい。(Cloudflareレジストラではこのタイミングで支払いも)

Cloudflareにドメインを移管 22
手順22:
AuthCodeを入力後、支払いの手続きを完了するとこの画面。
移管前のレジストラが移管手続きを行っている状態。ここで昔は数日を要することもあったが、どのレジストラも自動化されたのか最近は1時間かからないことが多い。
ただし、移管元のレジストラがドメインオーナーに「移管の申請が来ているが、その意志があるのか?」という確認を求めるようになっているので承認してやる必要がある。これは移管元のレジストラの管理画面で、或いはメールで確認を求められることが殆ど。
なのでメールの到着を待ち構え、メールが届いたらすぐに承認することがこの段階をすばやく終わらせるコツ。

もちろん、承認しないと進まないし、承認手続きの際に否認したら移管は失敗する。

Cloudflareにドメインを移管 23
手順23:
お名前.comの場合はこのような移管申請の確認を求めるメールが届く。
メール内にある承認リンクをクリックするとドメインオーナーによる移管の承認が行われたことになり移管の処理が進む。(数分から数時間でCloudflareにドメインの管理権限が渡って移管完了になる)

Cloudflareにドメインを移管 24
手順24:
移管元(引っ越し前)のレジストラでも移管の状況を確認できる。
画像は、メールの承認リンクを押して承認した直後くらいに撮ったスクショ。まだ承認処理が完了していない。

Cloudflareにドメインを移管 25
手順25:
Cloudflareレジストラの画面の左列で「Manage」で移管の完了を確認する。画像ではStatusは既に「アクティブ」になっているので一応移管しているようだが、Auto-renew (ドメイン年次自動更新)のスイッチがオフでExpiresに正しいドメインの期限が表示されずに「Invalid date」などと表示されているので完全には完了していなさそうな感じ。
一番右の「Manage」をクリック

Cloudflareにドメインを移管 26
手順26:
数分後のスクショだが、「既に自動更新がオンです」になっていて「ドメインの有効期限」の日付も表示されている。移管は完全に完了した模様。

Cloudflareにドメインを移管 27
手順27:
「Configuration」タブを選択。
DNSSECのスイッチはオンにしたいところ。
また、今回は他所のレジストラからCloudflareレジストラに移管したが、将来また他所のレジストラに移管したいということになったときにはこの画面から移管させることが可能になるみたい。(まだ、移管したばかりで他所に移管させるためのロック解除のボタンが押せないためどのような画面が表示されるのかは不明。)

多くのドメインと多くのレジストラではドメインを移管する際にドメイン1年分の料金を支払うことになるが、その1年分の料金でドメインの有効期間が1年伸びることになるので実質的には移管のための費用は取られない。引っ越しの際に1年分の更新料を払ったようなもの。なので手間さえ惜しまなければドメインの移管というのは「損」はない。どんどん安いレジストラまたは信用できる良いレジストラに移管させてしまえば良いと思う。無駄に更新料の高くて使い勝手の良くないレジストラを使い続ける必要はない筈。

Excel VBA事始め その2

勉強会
©いらすとや.

Excel VBA その2 1
前回の記事で「Sheet1」に書いたコードは消して、今回は左のツリーから「標準モジュール」の中の「Module1」にコードを書くことにします。

1
2
3
Sub test()
    ThisWorkbook.Sheets(2).Cells(3, 2).Value = 1 + 2
End Sub

testという名前のサブルーチンプロシージャを作成し、「ThisWorkbook (このワークブック)」の「2番めのシート」の「Cells(3,2) "B3"セル」の「値」は「1 + 2」であるという内容です。なお、1 + 2は引用符で括っていないため「計算」になります。

Excel VBA その2 2
ワークブックを確認します。コードでは「Sheets(2)」 (2番めのシート) を指定したのでこの例では「Sheet2」のワークシートになります。なお、2番めのシートが必ず「Sheet2」という名前のワークシートになるというわけではないのでご注意ください。
Cells(3, 2)は「3行目,2列目のセル」なのでワークシートでは"B3"セルになります。そして、その値が1 + 2を計算したものになるため 3 がセルに入っているのが正解です。なお、VBAのコードで1 + 2が計算された結果である3という数値が直接セルの値として入っています。「=1+2」 のようなワークシート関数がB3セルに入っているわけではありません。

ここからは次の例です。

Excel VBA その2 3
今回は先に「テスト」という名前のワークシートを(手動で)作成します。もちろんワークシートはVBAでも作成できますが、それはまた次の記事以降で。

Excel VBA その2 4
今回もコードはModule1に書きます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Sub test()
    Dim wsTest as Worksheet
    Set wsTest = ThisWorkbook.Worksheets("テスト")

    With wsTest.Cells(3, 2)
        .Value = 1 + 2
        .Interior.ColorIndex = 37        '暗めの水色
        With .Font
            .ColorIndex = 6        '黄色
            .Size = 20
        End With
    End With
End Sub
今回は変数が出てきます。wsTestは、ワークシート型というオブジェクト変数です。(2行目)
wsTest に ThisWorkbook.Worksheets("テスト")「このワークブック」の「テスト(という名前の)」ワークシートを格納します。(3行目) With ○○ から End Withの間は「○○について」です。5行目の場合は「wsTest.Cells(3,2)について」なので変数部分を仮に展開すると「このワークブックの"テスト"ワークシートの"B3"セルについて」です。(5行目)
「.」から始まっている場合は「With ○○」の対象です。つまり「.Value = △△」であれば ○○.Value = △△ になります。(6〜11行目)
なお、With ○○ 〜 End Withの中に書かれていても 「.」で始まっていない場合はWith ○○の対象外です。
.Interior.ColorIndex は セルの装飾(セルの塗りつぶし)の色番号を指定するものです。ここでは色番号37番を指定しています。(7行目)
With ○○ 〜 End Withの中に再びWithで始まるものが出てきました。(8行目)
ここでは「With .Font」 ということで「.」で始まるので5行目のWith ○○の対象です。つまり With wsTest.Cells(3, 2).Font です。これは「"テスト"ワークシートの"B3"セルの『フォント』について」ということになります。(8行目)
.ColorIndex = 6 と書かれているということは「.」で始まっているのでWith .Fontの対象です。そのColorIndex(色番号)の指定なので「フォントの色の指定」ということになります。先の7行目はセルの装飾についての色番号の指定でしたが、今回はセルのフォントの色指定です。(9行目)
.Size = 20も「.」で始まっているのでWith .Fontの対象です。"B3"セルに使用するフォントのサイズを(ポイント)指定しています。これはフォントなのでSizeというプロパティが使用できますが、例えば先の7行目のような.Interior(セルの装飾)では.Sizeプロパティはありません。「セル(の装飾)のサイズ」だと意味がわからないですしね。(10行目)
11行目のEnd Withは8行目のWith .Fontと対応します。
12行目のEnd Withは5行目のWith .wsTest.Cells(3, 2)と対応します。

このようにWith ○○ 〜 End Withを使うとスッキリ書けて見通しが良くなります。

Excel VBA その2 5
ワークブックに戻り、「テスト」という名前のワークシートを開きます。
そのワークシートの「B3」セルに3という値が入り、通常より大きい文字になっていて、文字の色が黄色、「B3」セルが水色に塗りつぶされていれば、VBAで書いたとおりになったということです。画像では3行目全体の高さが他の行より大きくなっていますが、今回VBAでは行の高さは指定していないのでExcelが自動調整して表示がこうなったものです。

注意

1
2
3
4
5
Sub test()
    With ThisWorkbook.Worksheets("テスト")
        .Cells(3, 2).Value = 1 + 2
    End With
End Sub

このように書いた場合、3行目は「.」で始まっているので2行目の対象です。つまりThisWorkbook.Worksheets("テスト").Cells(3, 2).Value = 1 + 2 と なるので、「このワークブック」の「テスト」という名前のワークシートの"B3"セルに3という値が入ります。(期待通りの動作)

1
2
3
4
5
Sub test()
    With ThisWorkbook.Worksheets("テスト")
        Cells(3, 2).Value = 1 + 2
    End With
End Sub

この例では3行目が「.」で始まっていません。この場合は2行目のWith ThisWorkbook.Worksheets("テスト")とは関係ない指定となります。 ワークブックやワークシートの指定無しの「"B3"セルの値は1+2である」と書いたのと同じ状態なので好ましくありません。
「テスト」ワークシートが選択(アクティブに)された状態でこのコードを動作させてみると「テスト」ワークシートの"B3"セルに3という値が入るかもしれませんが、他のワークシートが選択(アクティブに)された状態で動作させてみるとそのアクティブなワークシートの"B3"セルに3という値が入ります。(期待していない動作)。
なお、ワークシートのコード窓に書いた場合はアクティブなワークシートではなく、そのコード窓のワークシートのB3セルになります。また、コード内でワークシートをアクティブ(.Activate)にする指定を行った後であればそのアクティブなワークシートになります。

今回のような僅か数行のコードであればおそらく間違えることもないでしょうし、仮に間違って書いたとしてもすぐに気付けるでしょう。しかし、コードが増えると気付きにくくなるので記述の際は十分にご注意ください。



Excel VBA事始め その1

仕事猫
©いらすとや.

「がとらぼ」では5年ほど前にExcel&Access VBAの記事をホンの幾つか書いたことがあるけど、忙しくなってその後が続けられず取り下げた。今回改めてExcelやAccessでのVBAの触りから何か実用的なものを作るというのをやっていきたいかなと思っている。個々の細かいことは他所の詳しいサイトを見て貰うとして「がとらぼ」ではコツみたいなのを主にやりたい。のんびりとね。

個人でたとえば家計簿や趣味のことでデータを一覧や表にするというのをやっている人はいるとは思う。でも、データ集計というのはあまり個人でやることはないかな。
一方で会社の業務ではとにかくデータを集めて集計というのをずっとやっている人もいるでしょう。Excelはデータ集計では非常に便利というか必須のツールです。
業務といえど新卒で雇われてから定年で退職までずっと異動もなく同じ集計をやり続けるということはない筈で、異動もあれば中途退職、逆に中途採用で入ってくることもあるでしょう。「この集計は俺でないとダメだぁ」とかじりついたままで居られても困ります。集計という仕事も次々に別の人に引き継いでいくことでしょう。また、集計自体も変わっていく筈で「勤続30年ですが毎日/毎週/毎月/毎年、何一つ変わりません」ということはないでしょう。
そこで、集計を誰でもできるようにレシピ化するというのが必要になります。

で、日本の会社だと「では誰でもできるように手順書を作りましょう」とやってしまうところが多いかな?そんなおバカな会社は今後は淘汰されていくと思うけど。
ホンの数分の手順でできる程度の集計ならともかく数百のデータソースファイルやデータベースからデータを集めて手作業で数日かかるようなのは注意しても間違いもあるし正確にできるにしてもそもそも時間の盛大な無駄。人間のために「手順書」というレシピを作るくらいならコンピューターにやらせるレシピを作って更新していってね。ExcelやAccessならVBAでどうぞ。

でも、小さな会社であっても会社の誰か1人だけがExcel VBAを触れますというのはダメよ。ホント難しいものではないので何人かができるように。ワークシート関数ウィザードには相当スキルが高くて才能がある人でないとなれないけどVBAで何か書ける/読める/データの振り分け/データの集計程度ならPC触るの初めての人でも1週間も研修すればほぼ誰でもなんとかなりそうなレベルになるかと。
エクセレントなコードにこだわって他人が理解できないようなのじゃなくて泥臭くても良いので何をしたいのかが判るように書くのが大事と思う。でないと、後から何か変更の要があったときに、かつて自分で書いたものであってもじっくり読まないと丸っきり解らないなんてことも。まして他人の書いたのなんて小難しいことがしてあるとメモがあってもチンプンカンプン。これじゃダメ。

以下はWindows 11とExcel 2021の画面での説明になりますがやってること/やること/できることはほぼ20年以上前のExcelから大して変わりません。(Excel 2007から拡張された部分を除く)

Excelの起動から

Excel VBA事始め 1
Excelはスタートメニューから起動します。またはExcelのファイルをダブルクリックすれば起動しますね。

Excel VBA事始め 2
Excelのホーム画面です。今回、Windows 11のダークテーマが有効のPCでExcelを起動したところExcelもダークテーマで起動したのでこれを変更します。
左下の「オプション」をクリック。

Excel VBA事始め 3
「Excelのオプション」画面の左列で「全般」を選択した状態で、右列の「Officeテーマ」を変更します。このページの以下の画像では「カラフル」のテーマを有効にした画面になっています。
右下の[OK]をクリックして変更を確定させてからホーム画面に戻ります。

Excel VBA事始め 4
今回は新規ワークブックを使って操作してみるので「空白のブック」をクリックします。
ExcelではExcelの1つのファイルをワークブック(Workbook)といいます。(次の画像でも)

Excel VBA事始め 5
Excelの基礎の基礎ですが、今後VBAで何かしようと思ったら幾つかの用語を認識することが非常に重要です。
Excelのファイルがワークブック、Workbook(s)です。
1つのワークブックには罫線のページであるワークシート(Worksheet)が1つ以上含まれます。ワークシートは追加や削除や並べ替えが可能です。罫線のページ以外にグラフなどのシートもあります。VBAでは罫線のページであるWorksheet(s)と、ワークシート&の他のシートを区別しないSheetsがあります。
罫線のワークシートの罫線の1マスをセル Cell(セル)といいます。Excel VBAではCells(アドレス)として指定すると1つのセルのことを指し、Cells だけを指定するとワークシート内の全てのセル(1つのワークシート全体)を指します。

Excel VBA事始め 6
横に端から端までが「行」(Row ロー/ロウ)。上から1行目,2行目と上下に並ぶ。Excel 2003までは最大で65535行。(xlsファイル)
Excel 2007以降は拡張されて100万行(1048576行)。(xlsx, xlsmファイル)
6万5千行というのはかなり厳しい制限だったので拡張されたことは喜ばしいけどExcelが重く不安定になったのでそれが凄いデメリット。(Excel 2021でも変わらず)
xlsxファイルがVBAマクロ無し、xlsmファイルがVBAマクロ有りのファイルの拡張子です。

Excel VBA事始め 7
縦に端から端までが「列」(Column カラム/コラム)。左から1列目2列目と左右に並ぶ。Excel 2003までは最大256列。(xlsファイル)
Excel 2007以降は拡張されて16384列。(xlsx, xlsmファイル)
Excelでは標準状態でA列,B列のようにアルファベットの列名になっています。行との混同を防ぐために判りやすいですがアルファベットの列名というのはプログラムでは使いにくいかも。(VBAでは多くは数字の列番号を使うと思います)

Excel VBA事始め 8
範囲は(基本的には)ワークシート内で任意で選択できます。Range (レンジ)。
VBAでは単純な計算時にはあまり使わないかもしれませんが、コピーや集計や装飾等では意外とよく使用します。

Excel VBA事始め 9
ワークシートのセルに埋める計算式がワークシート関数です。VBAを使わなくても自動計算できて大変便利なので好きな人は多用します。「宣言」等を使うことで他のワークブックも参照して計算できます。
しかし、自身の不注意や他人の無知によって破壊されやすく破壊されたことが判りにくく、メンテナンス性が良くないという問題があるため「がとらぼ」の中の人は嫌いです。(特定のセルをロックしたりワークシートの保護をしていても何故か壊されるよね、会社のExcelあるある)
VBAからワークシート関数を変更することが可能です。

VBEで何か書いてみる

Excel VBA事始め 10
Visual Basic Editor (VBE)を開きます。[Alt]+[F11]です。
おそらくVBEを開く前にアクティブになっていたワークシートのコード窓が開きます。上の画像ではSheet1のコード窓が開いています。

Excel VBA事始め 11
今回はあえてsheet1のコード窓にコードを書く。
ワークシートのコード窓にコードを書くとワークシートの指定を省略してもそのワークシートであると認識されます。
ただし、ワークシートというのは削除されることがあり、ワークシートが削除されるとそこに書かれたコードも失われるため、ワークシートにコードを書くのはあまりオススメはしません。
コードを書いたら[F5]で実行。

1
2
3
Sub test()
    Cells(1,1).Value = "Hello Excel VBA!"
End Sub

「サブルーチン」プロシージャを使用し、プロシージャ名はtest。 (1行目)
セル(1行目,1列目)の値(Value)に「Hello Excel VBA!」を指定。(2行目)
testサブルーチンプロシージャを終了。(3行目)。

VBAでは戻り値のない関数をサブルーチン(Sub)に、戻り値のある関数をファンクション(Function)というプロシージャに書きます。

部品/要素(オブジェクト)には階層があります。「事務所」の「3番目の机」の「右の1番上の引き出し」の「ボールペン」のように「book1.xlsmワークブック」の「Sheet1ワークシート」の「A1セル(1行目/1列目)」。
そして「プロパティ」とその「内容」があります。
〜の「ボールペン(オブジェクト)」の「インクの色(プロパティ)」は「赤(内容)」というのはありますが、〜の「ボールペン」の「芯の濃さ(プロパティ)」は「2B(内容)」というのがありえないように、〜の「A1セル(オブジェクト)」の「値(プロパティ)」は「ホニャララ(内容)」というのはありますが、〜の「A1セル」の「高さ(プロパティ)」は「16ポイント(内容)」というのはありません。Excelでセルが個別に高さを持つことはできません。ワークシートで「高さ」プロパティを持つのは「行(Row)」です。

今回はSheet1のコード窓に書いたので Thisworkbook.Worksheets("Sheet1").Cells(1,1).Value = "〜" のようにワークブックやワークシートの指定を行うことをせず、いきなり Cells(1,1).Value = "〜" のように省いて書くことができるが、複数のワークブック、ワークシートを扱うときはワークブックやワークシートを明示するようにする方が無難。(次回以降はワークブックやワークシートを明示する書き方をします)

Excel VBA事始め 12
VBAに書いたコードを実行したらSheet1ワークシートを確認する。
A1セルに「Hello Excel VBA!」が入っているので成功。

次回以降、業務に使えそうなことを少しずついろいろやっていこうと思います。

2021年11月28日: 記事題名に「その1」を追加