- とにもかくにも、やっとif文
- 割と飽きてきてた。
- やっぱ、覚えるだけではなく、動いて動かして、ってしないとね。
- セルA1が空欄の時に100を入れる
Sub sample()
If Range("A1").Value = "" Then
Range("A1").Value = 100
End If
End Sub
- このifステートメント内の「=」は右辺を左辺に代入」ってヤツではなく、「値が等しい、イコール」であるとの意味。
- 複数条件は論理式でまとめると効率が良さそう。
Sub sample()
If Range("A1").Value <> "" And Range("B1").Value > 0 Then
Range("C1").Value = "OOKK"
End If
End Sub
Else
のはいるタイミング。 なお、ElseIF
で更に条件を追加する事が出来る。
Sub sample()
If Range("A1").Value > 100 And Range("A1").Value < 200 Then
Range("B1").Value = "OK"
Else
Range("B1").Value = "NG"
End If
End Sub
- おなじみ無限ループ製造構文
- Hello1というメッセージボックスが出てきて、okボタンを押すとHello2,さらにok押すとHello3が出てくるというもの
- next i ってあえて書かなくても良いのに。全部のループにあるんだし・・・
Sub lesson()
Dim i As Long
For i = 1 To 3
MsgBox "Hello" & i
Next i
End Sub
- セルA1〜A3にHelloと入れる。
- For Next ステートメントでセルを指定するときはCellsを使うのが一般的との事。
- まぁ、Rangeだと変数を入れるところ無いものな。実は入れられたりするんかな?
Sub lesson()
Dim i As Long
For i = 1 To 3
Cells(i, 1).Value = "Hello" & i
Next i
End Sub
Sub lesson()
Dim i As Long
For i = 1 To 5
Cells(i, 3).Value = Cells(i, 1).Value + Cells(i, 2).Value
Next i
End Sub
- For Next では制御用の変数が1ずつ増える。これを任意の数だけ増やすにはstepを使う
- 一行おきにVBAとセルに入れる
Sub sample()
Dim i As Long
For i = 1 To 5 Step 2
Cells(i, 1).Value = "VBA"
Next i
End Sub
- オブジェクトの省略
- いまいち使い手がわからない・・・
- 3行目、
.Range
と.
から始まってる事に注意
- このようにする事で、
Range("A1”)
はWith
ステートメントで指定されたSheet2
の特定のセルである、という事を示す。
Sub sample()
With Sheets("Sheet2")
.Range("A1").Value = "Hello"
End With
End Sub
.
が無い場合には、With
ステートメントの記述にかかわらず、アクティブシートのA1が対象となる
- 下の例をSheet3ひらいて実行すると、Sheet3のA1セルにHelloと入力される
.
がないだけで!
Sub sample()
With Sheets("Sheet2")
Range("A1").Value = "Hello"
End With
End Sub
- For文とIf文を勉強したらこれをやらねば
- dankogaiの影響受け過ぎと思いつつも。
Sub FizzBuzz()
Dim i As Long
For i = 1 To 100
If i Mod 15 = 0 Then
Cells(i, 1).Value = "FizzBuzz"
ElseIf i Mod 3 = 0 Then
Cells(i, 1).Value = "Fizz"
ElseIf i Mod 5 = 0 Then
Cells(i, 1).Value = "Buzz"
Else
Cells(i, 1).Value = i
End If
Next i
End Sub