0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VBA あれこれ

Posted at

最近初めてExcelのマクロを触りました。
初歩的なことから調べたので、メモ書きを残します。

※初心者の記事のため、誤り・もっと良い書き方があるかもしれません。お気づきの点はご指摘お願いいたします。

ファイル出力

出力したい先のパス(~\XXX\)+ファイル名(mmm.sql)で出力
※今回はsqlファイルを出力したかったので.sql 別の拡張子でも可?

ファイルパス = "~\XXX\mmm.sql
Open ファイルパス For Output As #1
Print #1, "ファイルに記載したい内容"
Close #1

Excelのファイルからマクロで.sqlファイルを生成する #ExcelVBA - Qiita
Excel VBA:テキストファイルへ書き込み|Open For Output As

戻り値

Functionでのみ使用可能。
関数名に値を入れる、呼び出し元で変数に入れることで使用可能

Sub test()

  Dim hoge
  hoge = sample()
  
  MsgBox hoge
  
End Sub
  
Function sample()
  
  sample = "test"

End Function

【VBA】Functionの使い方【戻り値の取得、複数の引数や配列を渡す】

条件分岐

If,caseが使えることは確認した(これしか使ってない)

Sub sample()
  
  If hoge <> "" Then
    MsgBox "hogeは空じゃない"
  Else
    MsgBox "hogeは空!"
  End If

  select case hoge
  case "朝"
    MsgBox "朝だよ"
  case "昼"
    MsgBox "昼だよ"
  case Else
    MsgBox "日が暮れたよ"
  end select
End Sub

【Excel VBA入門】Select Case文の使い方。複数条件をスッキリ書く! – Valmore

セル取得

RowとかColumnの取得がしたいとき、これで取れる
Findと組み合わせて、特定のセルと同じ内容のセルを探す・・・とかもできる、そのRow取得とか(サンプル)
※Findで見つからなかった場合はNothingになる。Find内の細かい設定オプションはリンク先参照

Sub sample()
  Dim hoge
  Dim fuga
  
  hoge = workbook.Worksheets("Sheet1").Range("A3")
  'Excelの「Sheet1」シートのA3セルがhogeにとれた状態
  
  MsgBox hoge.Row
  '取得したセルのRowを出力(3)
  MsgBox hoge.Column
  '取得したセルのColumnを出力(A)
  
  fuga = workbook.Worksheets("Sheet2").Range("B3:B20").Find(What:hoge)
  'Excelの「Sheet2」シートのB3~B20セルで、A3と同様の内容のセルを取得する
  
  MsgBox fuga.Row
  '取得したセルのRowを出力
  MsgBox fuga.Column
  '取得したセルのColumnを出力
  
end sub

【VBA】Rangeの行、列、行数、列数を取得【Row、Column、Countを使う】
【Excel VBA入門】Findメソッドで条件に一致するセルを検索する方法 – Valmore

未入力チェック

記載した内容を使って処理するものは入力チェックが必要だよね~ってあとから追記しました
Excel VBA 入力が必要なセルが未入力の場合メッセージを出す

文字列操作系

javaのsubstringぽいものはなさそうなので、Replaceを駆使した

Sub sample()
  Dim hoga
  hoga = Replace("Hello World!","World","")
  'Worldを取り除く
  MsgBox hoga 'Hello !
  
  hoga = Replace("Hello World!","World","everyone")
  '勿論置換もできる
  MsgBox hoga 'Hello everyone!
  
  hoga = Replace("World World World!","World","everyone",2,1)
  '置換の位置指定(この場合は真ん中のWorldだけ置換
  MsgBox hoga 'World everyone World!
  
end sub

【VBA】Replace(置換)をマスター!基本と応用テクニック – COMMAND LAB -TECH
VBA関数(文字列操作,Replace,InStr,StrConv)|VBA入門
Excel VBAで文字列の切り出しを行う:Left, Right, Mid | UX MILK

ループ系

繰り返し処理(For Next)|VBA入門
EXCEL VBA 繰り返し処理の使い分け(For Next・Do While Loop・Do Until Loop)

ワイルドカード

Like判定でワイルドカード使えば一部合致するものとかで条件作れる
【VBA】文字列をLikeで判定【ワイルドカード、Notを使う】

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?