sironekotoroの日記

Perl で楽をしたい

Excel VBA ベーシック 公式テキスト 8章 関数

日付や時刻を操作する関数

  • Now 現在日時を返す
    • Range("A1") = Now -> 2014/4/19 10:58:00
  • Year(Now) 現在年を返す
  • Month(Now) 現在月を返す
  • Day(Now) 今日の日付を返す
    • 01時02分 のような表示にするには、Format関数を利用する
  • Hour(Now) 時間を返す
  • Minute(Now) 現在何分かを返す
  • Second(Now) 現在秒を返す
  • DataSerial(年,月,日) 日付データ(シリアル値)を返す
    • MsgBox DateSerial(Year(Now), Month(Now), Day(Now)) -> 2014/04/19

文字列を操作する関数

  • Len 文字数を返す
    • MsgBox Len("Excel VBA") -> 9
    • スペースも1文字とカウントされる
  • Left(文字列,文字数) 文字列の左端から文字数目までを返す
    • Range("A1") = Left("東京都千代田区", 3) -> 東京都
  • Right(文字列,文字数) 文字列の右端から文字数目までを返す
    • Range("A1") = Right("東京都千代田区", 4) -> 千代田区
  • Mid(文字列,開始位置,文字数) 文字列の開始位置から指定した文字数文を返す
    • Range("A1") = Mid("東京都千代田区", 3, 2) -> 都千
    • 文字数を省略した場合には、開始位置から後ろ全部を返す
      • Range("A1") = Mid("東京都千代田区", 3) -> 都千代田区
  • LCase(文字列) 小文字化
  • UCase(文字列) 大文字化
  • LTrim(文字列) 指定した文字列の左端にあるスペースを取り除く
  • RTrim(文字列) 指定した文字列の右端にあるスペースを取り除く
    • Perlで言うところのchompみたいなもんかな?
  • Trim(文字列) 指定した文字列の両端にあるスペースを取り除く
  • Replace(文字列,検索文字列,置換文字列)
    • MsgBox Replace("株式会社", "株式", "有限") -> 有限会社
    • MsgBox Replace("株式会社", "株式", "") -> 会社
  • InStr(文字列,検索文字列) 検索文字列が存在する位置を返す
    • MsgBox InStr("株式会社", "会") -> 3
  • StrConv(文字列,文字種) 文字列を指定した文字の種類に変換して返す
    • MsgBox StrConv("えくせる", vbKatakana) -> エクセル
  • Format(元の値,書式) 値に書式を適用した結果を返す
    • MsgBox Format(1234, "#,##0円") -> 1,234円
    • MsgBox Format(Now, "ggge年m月") -> 平成26年4月
  • Int(数値) 小数点を切り捨てて、整数値を返す
    • MsgBox Int(1.234) -> 1
  • Abs(絶対値) 絶対値を返す
    • MsgBox Abs(-5) + Abs(-7) -> 12

ユーザーと対話する関数

  • MsgBox(文字列,ボタンとアイコン,タイトル) メッセージボックスを表示し、ユーザがどのボタンをクリックしたかを返す

    • vbOK OKボタンが押された
    • vbCancel Cancelボタンが押された
    • vbAbort 中止ボタンが押された
    • vbRetry 再試行ボタンが押された
    • vbIgnore 無視ボタンが押された
    • vbYes はいボタンが押された
    • vbNo いいえボタンが押された
    • MsgBox関数の結果を利用するときは、引数全体を()で囲む。表示のみであれば()は必要ない。

    Dim rc As Long rc = MsgBox("保存しますか?", vbYesNo + vbQuestion) If rc = vbYes Then MsgBox "保存します" Else MsgBox "保存しません" End If

  • InputBox(メッセージ,タイトル,最初に表示する文字列)

    Dim buf As String buf = InputBox("Please Input", "INPUTBOX", "Dummy") Range("A1") = buf

    • キャンセルボタンを押したときには、空の文字列“”が返る

    ``` Dim buf As String buf = InputBox("Please Input", "INPUTBOX", "Dummy")

    If buf = "" Then MsgBox "Canceld" Else Range("A1") = buf End If ```

  • Dir(ファイル名) ファイル名が存在すればそのファイル名を返し、存在しなければ空文字列“”を返す

    Dim FileName As String FileName = Dir("C:\Book1.xls") If FileName = "" Then MsgBox "C:\Book1.xls is Not Found" Else MsgBox "C:\Book1.xls is Found" End If

  • val(文字列) 文字列形式の数値を、数値形式に変換する
    • MsgBox Val("1000円") -> 1000
    • Excel VBAでは文字列型でも数値として厚かって計算する事は可能。
      • MsgBox "10" * "20" + "30" -> 230
    • 文字列の左側にある数値のみを認識し、それ以外を除去するという性質がある
      • MsgBox Val("1000円") * "20" & "円" -> 20000円

関数の組み合わせ

  • スペースで区切って表示する
Name = "斉藤 一"
Space = InStr(Name, " ")

MsgBox Left(Name, Space)  '斉藤
MsgBox Mid(Name, Space)   '一