気ままに趣味旅行

面白いコト「拡がる/拡げる」

エクセルVBA 集計ファイルの作り方③

どうもhiroakiです。

先日、下記の記事を書きました。

コードの中身が分からない人のために、解説していきたいと思います。

hiroakies.hatenablog.com

hiroakies.hatenablog.com

 

オブジェクトについて

オブジェクトとは、セルやワークシートなどの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です。

  1. Range("C4").Value

このコードで、セルC4の値を取得できます。

  1. Range("C4").Value = "文字を代入します"

このように、オブジェクトのプロパティにイコールを書いて、文字を入れることもできます。これを代入と呼びます。代入は左側にいれると覚えておきましょう。

 

メソッドはオブジェクトの動作を表します。コピーや貼り付けといった作業を行います。

  1. Range("C4").Copy

以上、オブジェクト.プロパティ、オブジェクト.メソッドの基本的な形を覚えておいてください。

 

内容へ

では、中身に入っていきます。

  1. Worksheets("出力").Cells.Clear
  2. Worksheets("出力").Range("A1") = "ファイル名"
  3. Worksheets("出力").Range("B1") = "貼付け内容"
  4. Worksheets("作業").Activate
  5. name_worksheet = Worksheets("作業").Range("C1")
  6. hanni = Worksheets("作業").Range("D1")

1行目はワークシートコレクションのうち、出力シートのセルコレクションを消す(Clearメソッド)ということをやっています。Clearメソッドでは書式を含めて全て消すことができます。

2行目は出力シートのA1セルにファイル名という文字を入れています。3行目も同様です。

4行目は作業シートをアクティブにする(Activateメソッド)ということをやっています。いま作業シートを開いた状態になっています。

5行目では、name_worksheet変数に作業シートのC1セルに入っている内容を代入します。いまは「2班」と入っています。

6行目では、hanniに作業シートのD1セルに入っている内容を代入します。いまは「C16:H25」と入っています。

 

今回はここまで~

今回はここまでとします。

 

基礎的なことなので、さっと進めましたが、もっと詳しく知りたい場合は、コメントなどくだされば解説したいと思います。

次回からも続きを解説していきます。

 

では。

エクセルVBA 集計ファイルの作り方②

どうもhiroakiです。

先日、下記の記事を書きました。

コードの中身が分からない人のために、解説していきたいと思います。

hiroakies.hatenablog.com

 

~初心者のために~

ここでは、初心者のために分かりやすく解説していきます。

とはいうものの、私も特にプロじゃありませんので(笑)。

間違っているところや、不細工なコードになっているかと思います。というかこれから説明していきますが、結構雑に書いてます。その点はご了承ください。

また、一から説明していくので、必要でない箇所は都度飛ばし読みするなどしてご活用ください。

 

準備①標準モジュールを開きます

まず、開発タブ(表示されていない方はオプションより設定変更してください)にあるVisualBasicを開きましょう。

f:id:hiroakies4463:20200229195555j:plain

挿入タブより標準モジュールを開きます。

f:id:hiroakies4463:20200229201228j:plain

開いたら、そこにコードを書いていきます。

 

準備②名前をつけてあげましょう

マクロを作るには、まず名前を付けてあげなければいけません。

名前は、Sub半角スペース名前()で付けてあげます。

その後、エンターを押すと、End Subと勝手に表示されますが、これはsub 開く()というマクロがどこまで続くかを指定するものになります。

つまり、sub () ~ end sub までがひとつのコードなんだなとイメージを持ってください。

  1. Sub 開く()
  2. End Sub

と、いうことで。

ちなみに私は、開く()というマクロ名をつけましたが、これは変だと思います(笑)適当な性格がバレますね。

実際は、データ集計()などの名前を推奨いたします。

 

準備③コード例をコピぺしましょう

次はそこに、コード例を張り付けしてみましょう。

コードは以下のサイトより、コピペしてしてみてください。

hiroakies.hatenablog.com

実際に自分のフォルダに保存してみて、動くかどうか確認してみてください。

よろしいでしょうか。 

 

内容 Dim ~ As ~

ゆっくりやっていきますね。

まず、1から7行目まで。

  1. Sub 開く()
  2. Dim name As Range
  3. Dim name_worksheet As String
  4. Dim hanni As String
  5. Dim fn As String
  6. Dim wb As Workbook
  7. 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

 

今回はここまで~

今回はここまでとします。

基礎的なことなので、さっと進めましたが、もっと詳しく知りたい場合は、コメントなどくだされば解説したいと思います。

次回からはコードの中身を詳しく解説していきます。

 

では。