【他のレンジ/シート/ブックを更新する】

1 他のレンジを更新

2 他のシートを更新

3 逆Z式並びで更新

4 複数シートを更新

5 他のブックを更新

6 他のブックをオープン・クローズ

7 新規ブックを作成し更新

他のシートを更新

 今回は、Excel VBAによってあるシートのセルから別シートのセルに文字を代入するマクロをつくってみます。



1. 他のシートを更新

 Excel VBA/マクロで、シート内で、あるセルから別のセルに値を代入するときは、次のような構文になります。

Img9_1_10

 シート内で、あるセルから別のセルに値を代入するときは、ワークシート名が無くても、コンピューターは

 どこから、どこに代入するかを判断できます。

 だけど、あるシートから別のシートに値を代入するときは、ワークシート名が無ければ、コンピューターは

 どのワークシートのセルから、どのワークシートのセルに代入するかを判断できなくなります。

 そのため、Excel VBA/マクロで、あるシートのセルから、別シートのセルに値を代入するときは、

 それぞれのワークシート名を指定します。

 次のような構文になります。

Img9_1_11



2. 別シートに漢字学習帳を作成

 前回は、同一シート内で、『漢字入力帳』レンジからデータを読みとり、『漢字学習帳』レンジへデータを書きこみました。

 今回は、『漢字入力帳』シートからデータを読みとり、『漢字学習帳』シートへデータを書きこんでみます。

 そこで、その準備として、Excelマクロ有効ブック内に、『漢字入力帳』シートと『漢字学習帳』シートを

 作成しておきましょう。

 先ずは、前回使用したExcelマクロ有効ブックをコピーして『9_シートからシートへ代入する.xlsm』を

 作成します。

Img9_1_21

 次に、『9_シートからシートへ代入する.xlsm』の『Sheet1』のシート名を『漢字入力帳』に変更し、

 レンジ『L2:AE13』をクリアします。

Img9_1_22

 そして、シート名『漢字入力帳』にカーソルを合わせて右クリックし、『移動またはコピー』を選択します。

Img9_1_23

 『シートの移動またはコピー』画面が表示されたら、『末尾へ移動』を選択します。

Img9_1_24

 『コピーを作成する』にチェックを入れて、『OK』をクリックします。

Img9_1_25

 最後に、コピーして作成された『漢字入力帳 (2)』のシート名を『漢字学習帳』に変更し、

 レンジ『A1:J11』をクリアします。

Img9_1_26

 これで、『漢字入力帳』シートからデータを読みとり、『漢字学習帳』シートへデータを書きこむ準備ができました。

 それでは、『漢字入力帳』シートからデータを読みとり、『漢字学習帳』シートへデータを書きこむマクロを作成しましょう。

 『漢字入力帳』シートを選択します。

Img9_1_27

 Excelの『漢字入力帳』シートのB列に記述されている文を1文字ずつ分解しながら、

 『漢字学習帳』シートに2行目から縦書きで書きこみ、

 『漢字入力帳』シートのC~F列に記述されている漢字が

 『漢字学習帳』シートに書きこんだ文字の中にあれば、

 当セルを空欄のマスにして、併せてそのすぐ右側に、

 『漢字入力帳』シートのG~J列に記述されているふりがなを書きこむ。

 この一連の処理を、『漢字入力帳』シートの最小行から最大行までのループ処理で一気に実行し、

 『漢字学習帳』シートのL列からAD列まで瞬時に書きこみます。


 マクロ『レンジからレンジ4』を元にして、マクロ『シートからシート1』をつくります。

 先ず、宣言部を改修します。

 読込ワークシート『ESheet』に『漢字入力帳』を設定して定数宣言

 Const ESheet = "漢字入力帳"

 書込ワークシート『WSheet』に『漢字学習帳』を設定して定数宣言

 Const WSheet = "漢字学習帳"とします。

 【『シートからシート1』_ 宣言部】

Img9_1_28

 そして、処理部を改修します。

 マクロ『レンジからレンジ4』では、同一シート内で、あるレンジからデータを読みとり、

 別レンジへデータを書きこみましたが、マクロ『シートからシート1』では、

 あるシートのレンジからデータを読みとり、別シートのレンジへデータを書きこみます。

 そのため、変更箇所は、次のようになります。

Img9_1_29

 このように、

 Cells(ERw, ECm)の前に、Worksheets(ESheet).

 Cells(WRw, WCm)の前に、Worksheets(WSheet).

 を追加します。


 【『シートからシート1』_ 処理部】

Img9_1_30

 それでは、このマクロを実行してみましょう。

Img9_1_31

 『漢字学習帳』シートのL列からAD列にかけて、漢字の書きこみ問題が作成されました。


 次は、『漢字学習帳』シートのB列からT列にかけて、漢字の書きこみ問題を作成してみましょう。

 『漢字学習帳』シートのB列からK列を削除します。

Img9_1_32

 レンジ『B2:U13』をクリアします。

Img9_1_33

 マクロ『シートからシート1』では、『漢字学習帳』シートのL列からAD列にかけて、

 漢字の書きこみ問題を作成しました。

 今度は、マクロ『シートからシート1』をコピーして、マクロ『シートからシート2』とし、

 『漢字学習帳』シートのB列からT列にかけて、漢字の書きこみ問題を作成します。

 書込最小列がL列からB列に変わるだけだから、

 『書込最小列『WMinCm』を『12』列目から『2』列目に変更します。

 Const WMinCm = 2とします。


 【『シートからシート2』_ 宣言部】

Img9_1_34

 今回は、処理部の変更はありません。それでは、このマクロを実行してみましょう。

Img9_1_35

 『漢字学習帳』シートのB列からT列にかけて、漢字の書きこみ問題が作成されました。



3. 左方向への列のカウントアップ処理

 『漢字学習帳』シートのT列からB列にかけて右から左へ、漢字問題を書きこむマクロを作成してみましょう。

 予め、レンジ『B1:U13』をクリアしておきましょう。

Img9_1_36


 マクロ『シートからシート2』では、『漢字学習帳』シートのB列からT列にかけて

 左から右へ2列ずつカウントアップしながら、漢字問題を作成しました。

 今度は、マクロ『シートからシート2』をコピーして、マクロ『シートからシート3』とし、

 『漢字学習帳』シートのT列からB列にかけて右から左へ2列ずつカウントアップしながら、

 漢字問題を作成します。


 書込最小列がB列からT列に変わるから、書込最小列『WMinCm』を『2』列目から『20』列目に変更します。

 Const WMinCm = 20とします。


 【『シートからシート3』_ 宣言部(1)】

Img9_1_37

 それでは、このマクロを実行してみましょう。

Img9_1_38

 『漢字学習帳』シートのT列からB列にかけて右から左へ2列ずつ、漢字問題を作成したかったのに、

 『漢字学習帳』シートのT列からAL列にかけて左から右へ2列ずつ、漢字問題が作成されました。

 これは、このマクロの書込列カウントアップの代入式

 WCm = WCm + WStpCmが、関わっています。


 【『シートからシート3』_ 処理部】

Img9_1_39

 Const WStpCm = 2と定数宣言しているから、

 書込列カウントアップの代入式WCm = WCm + WStpCmの中の、WStpCmの値は2です。

 入力行のループの中で、WCm = WCm + 2ということは、

 入力行が1行ずつ増える毎に、WCm(書込列)が、左から右に2列ずつ増えていくということになります。

 WCm(書込列)が、右から左に2列ずつ減っていくようにするには、どうしたら良いと思いますか。

 WCm = WCm + 2ならば、WCm(書込列)が、左から右に2列ずつ増えていくのだから、

 WCm = WCm – 2ならば、WCm(書込列)が、右から左に2列ずつ減っていくと思います。

 WCm = WCm + WStpCmという代入式で、WCm = WCm – 2を成り立たせるために、

 Const WStpCm = -2と定数宣言する必要があります。


 【『シートからシート3』_ 宣言部(2)】

Img9_1_40

 このマクロを実行してみましょう。

Img9_1_41

 『漢字学習帳』シートのT列からB列にかけて右から左へ2列ずつ、漢字問題が作成されました。



4. 先頭行に問題番号を書き込む

Img9_1_42

 次は、『漢字学習帳』シートのT列からB列にかけて右から左へ2列ずつカウントアップしながら、

 『漢字入力帳』シートのA列に記述されている問題番号を、先頭行に書きこみます。

 今度は、マクロ『シートからシート3』をコピーして、マクロ『シートからシート4』とし、

 『漢字学習帳』シートのT列からB列にかけて右から左へ2列ずつカウントアップしながら、

 漢字問題を作成すると同時に、先頭行に問題番号を読み書きするプログラムコードを追加します。


 先ず、宣言部を改修します。

 読込問題番号列『EMDNoCm』に『1』列目を設定して定数宣言

 Const EMDNoCm = 1

 書込問題番号行『WMDNoRw』に『1』行目を設定して定数宣言

 Const WMDNoRw = 1

 問題番号『MDNo』を長整数型として変数宣言

 Dim MDNo As Longとします。


 【『シートからシート4』_ 宣言部】

Img9_1_43

 そして、処理部を改修します。

 『漢字入力帳』シートの最小行:『EMinRw』(2行目)から最大行:『EMaxRw』(11行目)にかけて、

 各行の漢字問題作成処理をループ処理で実行しますが、

 この漢字問題作成処理の最初に、

 先頭行に問題番号を読み書きするプログラムコードを追加します。

 For ERw = EMinRw To EMaxRw

   MDNo = Worksheets(ESheet).Cells(ERw, EMDNoCm).Value

   Worksheets(WSheet).Cells(WMDNoRw, WCm).Value = MDNo


  ・・・・・・・・・・・・・・・・・・・・・・


 Next ERw

 とします。


 【『シートからシート4』_ 処理部】

Img9_1_44

 それでは、このマクロを実行してみましょう。

Img9_1_45

 『漢字学習帳』シートのT列からB列にかけて、先頭行に問題番号が書きこまれました。




目 次

1. セルに文字を書きこむ
セルに文字を書きこむ

2. RangeとCellsでセルの位置を指定する
RangeとCellsでセルの位置を指定する

3. ループ処理でセルに値を書きこむ
ループ処理でセルに値を書きこむ

4. ループ処理でセルの値を読みとる
ループ処理でセルの値を読みとる

5. ループ処理でセルからセルへ値を代入する
ループ処理でセルからセルへ値を代入する

6. 条件分岐処理でセルの操作を分ける
条件分岐処理でセルの操作を分ける

7. 関数・プロパティ設定をつかう
関数・プロパティ設定をつかう

8. 他のレンジ/シート/ブックを更新する
他のレンジ/シート/ブックを更新する


YouTube

Excelマクロの実用版とデモ版


ブログ