エクセルVBA 集計ファイルの作り方③
どうもhiroakiです。
先日、下記の記事を書きました。
コードの中身が分からない人のために、解説していきたいと思います。
オブジェクトについて
オブジェクトとは、セルやワークシートなどのVBAで操作したい対象のことです。
例えば、セルならRange(セル番地)やCells(行,列)で表します。
セルC4(オブジェクト)を表す場合は、Range("C4")、Cells(4,3)となります。
また、Range(セル番地)は、Range("A1:B4")のように範囲を表すことも可能です。
親オブジェクト.子オブジェクトについて
親オブジェクト.子オブジェクトについて説明します。
先ほど、セルC4オブジェクトを示すために、Range("C4")の形を示しましたが、このコードだけを書くと、どのシートのC4か分からない場合があります。
その場合、「シート3のC4セル」のように階層構造で表らわさなければいけません。
コレクションについて
コレクションとは、オブジェクトが複数集まったものをいいます。
実は、先ほど説明したRange()はCells()のコレクションともいえます。
またCellsのみのでもコレクションとなります。
他にも、ワークシート1、2、3…となったものの集合体がWorksheetsです。
参考:https://excel-ubara.com/excelvba1/EXCELVBA358.html
プロパティ、メソッドについて
プロパティは状態のこと。例えばフォントや文字サイズ、色、罫線などです。
たとえばセルの値のプロパティはValueです。
- Range("C4").Value
このコードで、セルC4の値を取得できます。
- Range("C4").Value = "文字を代入します"
このように、オブジェクトのプロパティにイコールを書いて、文字を入れることもできます。これを代入と呼びます。代入は左側にいれると覚えておきましょう。
メソッドはオブジェクトの動作を表します。コピーや貼り付けといった作業を行います。
- Range("C4").Copy
以上、オブジェクト.プロパティ、オブジェクト.メソッドの基本的な形を覚えておいてください。
内容へ
では、中身に入っていきます。
- Worksheets("出力").Cells.Clear
- Worksheets("出力").Range("A1") = "ファイル名"
- Worksheets("出力").Range("B1") = "貼付け内容"
- Worksheets("作業").Activate
- name_worksheet = Worksheets("作業").Range("C1")
- hanni = Worksheets("作業").Range("D1")
1行目はワークシートコレクションのうち、出力シートのセルコレクションを消す(Clearメソッド)ということをやっています。Clearメソッドでは書式を含めて全て消すことができます。
2行目は出力シートのA1セルにファイル名という文字を入れています。3行目も同様です。
4行目は作業シートをアクティブにする(Activateメソッド)ということをやっています。いま作業シートを開いた状態になっています。
5行目では、name_worksheet変数に作業シートのC1セルに入っている内容を代入します。いまは「2班」と入っています。
6行目では、hanniに作業シートのD1セルに入っている内容を代入します。いまは「C16:H25」と入っています。
今回はここまで~
今回はここまでとします。
基礎的なことなので、さっと進めましたが、もっと詳しく知りたい場合は、コメントなどくだされば解説したいと思います。
次回からも続きを解説していきます。
では。
エクセルVBA 集計ファイルの作り方②
どうもhiroakiです。
先日、下記の記事を書きました。
コードの中身が分からない人のために、解説していきたいと思います。
~初心者のために~
ここでは、初心者のために分かりやすく解説していきます。
とはいうものの、私も特にプロじゃありませんので(笑)。
間違っているところや、不細工なコードになっているかと思います。というかこれから説明していきますが、結構雑に書いてます。その点はご了承ください。
また、一から説明していくので、必要でない箇所は都度飛ばし読みするなどしてご活用ください。
準備①標準モジュールを開きます
まず、開発タブ(表示されていない方はオプションより設定変更してください)にあるVisualBasicを開きましょう。
挿入タブより標準モジュールを開きます。
開いたら、そこにコードを書いていきます。
準備②名前をつけてあげましょう
マクロを作るには、まず名前を付けてあげなければいけません。
名前は、Sub半角スペース名前()で付けてあげます。
その後、エンターを押すと、End Subと勝手に表示されますが、これはsub 開く()というマクロがどこまで続くかを指定するものになります。
つまり、sub () ~ end sub までがひとつのコードなんだなとイメージを持ってください。
- Sub 開く()
- End Sub
と、いうことで。
ちなみに私は、開く()というマクロ名をつけましたが、これは変だと思います(笑)適当な性格がバレますね。
実際は、データ集計()などの名前を推奨いたします。
準備③コード例をコピぺしましょう
次はそこに、コード例を張り付けしてみましょう。
コードは以下のサイトより、コピペしてしてみてください。
実際に自分のフォルダに保存してみて、動くかどうか確認してみてください。
よろしいでしょうか。
内容 Dim ~ As ~
ゆっくりやっていきますね。
まず、1から7行目まで。
- Sub 開く()
- Dim name As Range
- Dim name_worksheet As String
- Dim hanni As String
- Dim fn As String
- Dim wb As Workbook
- Dim n As Integer
Dim ~ As ~についてです。
ここでは変数の定義を行っています。
なんだか難しいですね(笑)
実はVBAというのは、一種のプログラミング言語です。この前提から押さえてもらわないといけません。
プログラミングには、変数と定数というものがあります。
ざっくり言うと、変数は変わるもの。定数は変わらないもの。です。
数学でやりましたね(笑)それと同じです。
少し詳しく説明すると、
Dim~ は、Dimensionは「次元」
As~は、「~として」
を意味しています。
ここでは、これから使おうとしている変数が、どういう種類のものかを【Dim 変数名 As データ型】の形式で、あらかじめ指定してあげます。これを変数の宣言と呼びます。
この記述によって、どれくらいメモリの容量を確保しないといけないか、あらかじめ決めてしまうのです。
とにかく、コード内で変数を使う場合は、初めに【Dim 変数名 As データ型】の形式で、宣言をしなければいけません。
しっかりと覚えときましょう。
~変数名について~
ちなみに、上のnameとかhanniとか全く適当です。つまり変数名は基本的になんでもいいです。これは、イメージとしては、ラベリングみたいなものだと思ってください。
ただ、どんなものか分かりやいような名前にした方が良いとは思います。
~データ型について~
今回はRangeとString、Workbook、Integerのデータ型が出てきていますね。
Rangeは範囲のこと。
Stringは文字列のこと。
Workbookはワークブックのこと。
Integerは整数のこと。
要は、
この変数には範囲を入れますよ~
この変数には文字を入れますよ~
この変数にはワークブックを入れますよ~
この変数には整数を入れますよ~
と宣言しているってことです。
他にも、よく使うデータ型がありますので、今後も色々と作ってみたい、という人は、いくつかこんなものがあるんだな~程度に覚えておいていただければ結構です。
詳しくは下記サイトなどを参考にしてもらえばいいです。
https://www.tipsfound.com/vba/02008
今回はここまで~
今回はここまでとします。
基礎的なことなので、さっと進めましたが、もっと詳しく知りたい場合は、コメントなどくだされば解説したいと思います。
次回からはコードの中身を詳しく解説していきます。
では。