VBAで意味を忘れた、分からなかったコードを調べた

# MSDNを使って調べてみよう

キッカケは仕事の準備で忘れた、分からなかった単語があったので振り返った。[^1]

## ActiveSheet

* ActiveSheet
 * ChartObjects
     * Chart
           * SetSourceData
 * Shapes[^2]
     * Fill[^3]
         * ForeColor.RGB
         * Visible
     * Line[^4]
         * ForeColor.RGB
         * Weight
     * Nodes
         * Count
         * SetPosition
     * AddShape
     * Delete
     * AddCurve
     * AddPolyline
     * Count

### Chartとは？
グラフのこと

```vb
' グラフに使うデータを読み込む
Charts(1).SetSourceData Source
```
### Shapeとは？
形状のこと、図形の形のことを言っている。

#### Fill
```vb
' fillは塗りつぶすなどの意味である
Shapes(1).Fill

' 前景色を設定する(RGB)
Shapes(1).Fill.ForeColor.RGB

' 塗りつぶしを有効にするか(見えるようにするか)設定する
Shapes(1).Fill.Visible
```

#### Line
```vb
' Lineは線を示す
Shapes(1).Line

' 線の色を設定する(RGB)
Shapes(1).Line.ForeColor.RGB

' 線の太さを設定する。
Shapes(1).Line.Weight
```

#### Nodes

```vb
' フリーフォームの接点
Shapes(1).Nodes

' フリーフォームの接点の位置を指定する
Shapes(1).Nodes.SetPosition
````

#### AddShape
````vb
' 図形を追加する
Shapes(1).AddShape
````

#### Delete

````vb
' 図形を削除する
Shapes(1).Delete
````

#### AddCurve
```vb
' ペジェ曲線を作成する
Shapes.AddCurve
```
#### AddPolyline
```vb
' 多角形を作成する
Shapes.AddPolyline
```
#### Count
```vb
' 図形の数を返す。
Shapes.Count
```

## その他

### Intersect

```vb
' 交差した結果(Range)を返す
Intersect(Range("A1:E5"), Range("C1:C5"))
```
### msoFalse

```vb
' 0を示す
msoFalse 
```

### msoShapeOval, msoShapeRectangle
MsoAutoShapeType列挙の定義(図形の種類)を示す[^5]

```vb
' 楕円のこと
msoShapeOval

' 四角形のこと
msoShapeRectangle
```

### shapeNode

```vb
' フリーフォームの節点
shapeNode
```

### Mod, stdev.p, var.p
計算で使う

```
' 割り算の余りを求める
Mod

' 標準偏差を求める
stdev.p

' 分散を求める
var.p
```

###MsgBox
```
' ダイアログ ボックスにメッセージを表示する
MsgBox("Hello VBA")
```

###Redim
```
' 動的配列の変数の容量を再度、定義する
Dim x() As Integer
ReDim x(10)
ReDim
```

###worksheet_change
```vb
' ワークシートのセルが変更されたときに発生するイベント
Private Sub Worksheet_Change(ByVal Target as Range)
 MsgBox("セルの値が変更された")
End Sub
```

## 整理すると
* イベント処理に関わること
* VBAの基本的な構文
* 統計的な話題
* グラフの話題

## 課題
前景色とは背景色とは

## 参考文献
[Excel VBA reference](https://docs.microsoft.com/en-us/office/vba/api/overview/excel)
[Excel VBA リファレンス](https://msdn.microsoft.com/ja-jp/vba/vba-excel)

<!--

* node.Points?
* target
* worksheet_change

[Excel 2010 VBA の基礎知識](https://msdn.microsoft.com/ja-jp/library/office/ee814737(v=office.14).aspx)
[Office 2010 VBA の基礎知識](https://msdn.microsoft.com/ja-jp/library/office/ee814735(v=office.14).aspx)



https://mimemo.io/m/qXLx9alV2l70BJv
https://ja.wikipedia.org/wiki/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E9%9B%86%E5%9B%A3

日本語
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/shapes-object-excel
https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/fillformat-visible-property-excel

mso 列挙対
https://msdn.microsoft.com/ja-jp/vba/office-shared-vba/articles/msotristate-enumeration-office
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1438293249
https://docs.microsoft.com/en-us/office/vba/api/office.msotristate
https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.office.core.msotristate?redirectedfrom=MSDN&view=office-pia
https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.office.core.msotristate?redirectedfrom=MSDN&view=office-pia

https://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/mod-operator
https://support.office.com/ja-jp/article/stdev-p-%E9%96%A2%E6%95%B0-6e917c05-31a0-496f-ade7-4f4e7462f285
https://support.office.com/ja-jp/article/var-p-%E9%96%A2%E6%95%B0-73d1285c-108c-4843-ba5d-a51f90656f3a
-->


[^1]: ただし、ざっくりと調べただけなの詳しくは公式のドキュメントを参考にしてほしい。自分もMSDNの調べ方、構造については十分な理解はしていない。今回は何となく定義が分かればよしとする。
[^2]: [Shape Object](https://docs.microsoft.com/en-us/office/vba/api/excel.shape)でプロパティやメソッドを調べることができた。
[^3]: Fillのプロパティを知りたいときは、[FillFormat Object](https://docs.microsoft.com/ja-jp/office/vba/api/excel.fillformat.forecolor)から調べることができた。
[^4]: Lineのプロパティを知りたいときは、[LineFormat Object](https://docs.microsoft.com/en-us/office/vba/api/excel.lineformat)から調べることができた。
[^5]: 詳しくは[MsoAutoShapeType 列挙 (Office)](https://msdn.microsoft.com/ja-jp/VBA/Office-Shared-VBA/articles/msoautoshapetype-enumeration-office)を見るとよい。