14 VBA To OOoBasic対比表(関数編)

OOo 関数編 OOo

Excel VBAをCalcのOOoBasicで動作可能かの調査

(Windows XP / OpenOffice.org3.1.0 / 3.2.0 / 3.2.1日本語版で検証)

 

VBA互換モード対応可否
使用できます

使用できます

(結果または引数がVBAと異なります)

使用できません(回避方法有)
使用できません(回避方法無)

 

 

No 関数名/メソッド/プロパティ/オブジェクト/ステートメント 内容 VBA使用例 VBA互換モード
1 Array 配列を作成し要素を代入します Sub Main()
    Dim varArray As Variant
    Dim IntNum As Integer
    varArray = Array("TEST1", "TEST2", "TEST3", "TEST4")
    For IntNum = 0 To 3
        MsgBox varArray(IntNum)
    Next
End Sub
2 Asc 文字列に対する文字コードを取得します Cells(1, 2).Value = Asc(Cells(1, 1).Value) 
3 CBool ブール型(Boolean)に変換します Cells(1, 2).Value = CBool(Cells(1, 1).Value)
4 CByte バイト型(Byte)に変換します Cells(1, 2).Value = CByte(Cells(1, 1).Value)
5 CCur 通貨型(Currency)に変換します Cells(1, 2).Value = CCur (Cells(1, 1).Value)
6 CDate 日付型(Date)に変換します MsgBox "40179" & Chr(9) & CDate(40179)
7 CDec 10進数(Decimal)に変換します Cells(1, 2).Value = CDec (Cells(1, 1).Value)
8 Chr 文字コード(ASCIIコード)に対応する文字を取得します MsgBox "TEST01" & Chr(9) & "TEST02" & Chr(10) & "TEST03" & Chr(13) & "TEST04"
9 CInt 整数型(Integer)に変換します Cells(1, 2).Value = CInt(Cells(1, 1).Value)
10 CSng 単精度浮動小数点型(Single)に変換します Cells(1, 2).Value = CSng(Cells(1, 1).Value)
11

Date

Time

Now

現在の日付・時刻・日時を取得します MsgBox "今日の日付は  " & Date & "  です。" & Chr(13) _
     & "現在の時刻は  " & Time & "  です。" & Chr(13) _
     & "日時は  " & Now & "  です。"
12 DateAdd 基準日時に経過時間を加算した日時を取得します MsgBox "2010/1/1の2週前は" & DateAdd("ww", -2, "2010/1/1")
MsgBox "2010/1/1の2週後は" & DateAdd("ww", 2, "2010/1/1")
13 DateDiff 日付や時刻の間隔を取得します Sub Main
    Dim StartDay As Date
    Dim EndDay   As Date
    'セルから開始,終了日付を取得
    StartDay = Range("B6")
    EndDay = Range("B7")
    '開始,終了日付から間隔を取得
    Range("C6").Value = DateDiff("yyyy", StartDay, EndDay)  '年間隔
    Range("C7").Value = DateDiff("m", StartDay, EndDay)     '月間隔
    Range("C8").Value = DateDiff("d", StartDay, EndDay)     '日間隔
End Sub
14 DatePart 日付や時刻から指定した部分を取得します

'本日の日付より年を取得
MsgBox DatePart("yyyy", Date)

'月(01)を取得

MsgBox DatePart("m", "2010/01/04")

15 DateSerial 年月日の数値から日付を取得します MsgBox DateSerial(2010,2,28)    '"2010/2/28"
MsgBox DateSerial(2010,2,29)    '"2010/3/1"
16 DateValue 文字列から日付データを取得します

Sub Main

    Dim strDate As String

    strDate = DateValue ("2010/1/1")              '2010/01/01
    strDate = DateValue ("平成22年1月1日")    '2010/01/01

End Sub

17 Dir ファイル名を取得します

Sub Main
    Dim strWorkFile As String
    Dim strAllFiles As String
    strAllFiles = ""
    'C:\フォルダのファイルを検索
    strWorkFile = Dir("C:\", vbNormal)
    '対象ファイルがなくなるまでファイル検索を繰り返す
    While strWorkFile <> ""
        strAllFiles = strAllFiles & Chr(13) & strWorkFile
        '同一ファイル検索時の2回目以降は引数を指定しないこと
        strWorkFile = Dir
    Wend
    MsgBox strAllFiles
End Sub

18 Error エラー番号に対応したメッセージを取得します Sub Main
    Dim intErrNo As Integer
    On Error Resume Next
    For intErrNo = 6 To 10
        Cells(intErrNo, 1).Value = intErrNo
        Cells(intErrNo, 2).Value = Error(intErrNo)
    Next
End Sub
19 Filter 配列の中から指定した文字列を含む(含まない)要素を取得します Sub Main
    Dim ArrStation As Variant
    Dim ArrSelect  As Variant
    Dim ArrSelect2  As Variant
    ArrStation = Array("東京", "上野", "新宿", "渋谷")
    '"東"を含む要素を取得
    ArrSelect = Filter(ArrStation, "東", True)
    '"上"を含まない要素を取得
    ArrSelect2 = Filter(ArrStation, "上", False)
End Sub
20 FormatDateTime 日付,時刻の書式を設定します MsgBox "現在の日付と時刻" & Chr(13) & Chr(9) _
       FormatDateTime(Now, vbGeneralDate) & Chr(13) & Chr(9) & _
       FormatDateTime(Now, vbLongDate) &  Chr(13) & Chr(9) & _
       FormatDateTime(Now, vbShortDate) &  Chr(13) & Chr(9) & _
       FormatDateTime(Now, vbLongTime) &  Chr(13) & Chr(9) & _
       FormatDateTime(Now, vbShortTime)
21 Hex 16進表記の文字列に変換します Sub Main
    Dim intCnt As Integer
    MsgBox Hex("16")
    intCnt = 100
    MsgBox Hex(intCnt)
    MsgBox Hex("&h1F")
End Sub
22

Hour

Minute

Second

時刻から時,分,秒を取得します Sub Main
    MsgBox Hour(Now)
    MsgBox Minute (Now)
    MsgBox Second (Now)
End Sub
23 InputBox ユーザからの入力データを受取ります Sub Main
    Dim strMsg As String
    strMsg = InputBox("文字を入力してください","文字入力")
    MsgBox strMsg
End Sub
24

InStr

InStrRev

文字列を検索します Sub Main
    Dim strData As string       '対象文字列
    Dim strSearch As string     '検索文字列
    Dim intAddr As string       '位置(Instr)
    Dim intAddr2 As string      '位置(InstrRev)
    strData = "Option Compare設定の有無により比較モードを設定します"
    strSearch = "設定"
    intAddr = Instr(strData, strSearch)        '位置:15
    intAddr2= InstrRev(strData, strSearch)     '位置:29
End Sub
25

Int

Fix

整数部分を取得します Sub Main
    MsgBox  Int(10.5)    '10
    MsgBox  Fix(10.5)    '10
    MsgBox  Int(-3.5)    '-4(値を超えない整数
    MsgBox  Fix(-3.5)    '-3(小数部をカット)
End Sub
26 IsDate 値が日付型であるか判定します Sub Main
    Dim strDate As String
    strDate = "2010/1/2"
    If IsDate(strDate) Then
        Msgbox strDate & " は日付型です"
    Else
        MsgBox strDate & " は日付型ではありません"
    End If
End Sub
27 IsNumeric 値が数値型であるか判定します Sub Main
    Dim strNum As String
    strNum = "10.1"
    If IsNumeric(strNum) Then
        Msgbox strNum & " は数値型です"
    Else
        MsgBox strNum & " は数値型ではありません"
    End If
End Sub
28 IsObject 値がオブジェクト型であるか判定します Sub Main
    Dim objRange As Object
    objRange = WorkSheets(1).Range("A1:A2")
    If IsObject(objRange) Then
        Msgbox " オブジェクト型です"
    Else
        MsgBox " オブジェクト型ではありません"
    End If
End Sub
29 Join 配列の各要素を結合します Sub Main
    Dim ArrData As Variant
    ArrData = Array("AAA","BBB","CCC")
    Msgbox Join(ArrData, ",")    '結果:AAA,BBB,CCC
    Msgbox Join(ArrData, "")     '結果:AAABBBCCC
    Msgbox Join(ArrData)         '結果:AAA BBB CCC
End Sub
30

Left

Right

対象文字列の左,右から指定した文字数分の文字列を取得します

Sub Main
    Dim strData As String
    strData = "あいうえおABCDE"
    MsgBox Left(strData,3)    '結果:あいう
    MsgBox Right(strData,4)   '結果:BCDE
End Sub
31

LeftB

RightB

対象文字列の左,右から指定したバイト数分の文字列を取得します

Sub Main
    Dim strData As String
    strData = "あいうえおABCDE"
    MsgBox LeftB(strData,3)    '結果:あD
    MsgBox RightB(strData,4)   '結果:DE
End Sub
32 Len

対象文字列の文字数を取得します

Sub Main
    Dim strData As String
    strData = "あいうえおABCDE"
    MsgBox Len(strData)    '結果:10
End Sub
33 LenB

対象文字列のバイト数を取得します

Sub Main
    Dim strData As String
    strData = "あいうえおABCDE"
    MsgBox LenB(strData)    '結果:10
End Sub
34

LTrim

RTrim

Trim

文字列の余白を削除します Sub Main
    Dim str As String
    str = Range("B1").Value
    MsgBox "Normal : [" & str & "]"
    '先頭のスペースを削除
    MsgBox "LTrim: [" & LTrim(str) & "]"
    '末尾のスペース を削除
    MsgBox "RTrim: [" & RTrim(str) & "]"
    '先頭と末尾の両方のスペース を削除
    MsgBox  "Trim : [" & Trim(str) & "]"
End Sub
35 Mid

対象文字列の指定した位置から文字数分文字列を取得します

Sub Main
    Dim strData As String
    strData = "あいうえおABCDE"
    MsgBox Mid(strData, 5, 3)    '結果:うえお
End Sub
36 MidB

対象文字列の指定した位置からバイト数分文字列を取得します

Sub Main
    Dim strData As String
    strData = "あいうえおABCDE"
    MsgBox MidB(strdata, 5, 3)    '結果:うH
    MsgBox MidB(strdata, 5, 4)    '結果:うえ
End Sub
37 MonthName 月名を取得します Sub Main
    MsgBox MonthName (10,True)     '結果:10
    MsgBox MonthName (10,False)    '結果:10月
End Sub
38 MsgBox メッセージを表示します Sub Main
    '今回の例ではvbApplicationModalは省略可能です
    Select Case MsgBox("処理を続行しますか?", vbYesNoCancel + vbQuestion + _
        vbDefaultButton2 + vbApplicationModal, "処理の続行")
    Case vbYes
        MsgBox "処理を続行します"
    Case vbNo
        MsgBox "処理を終了します"
    End Select
End Sub
39 Replace 指定した文字列を別文字列に置換します Sub Main
    Dim strData As String
    strData = "データを置換します"
    MsgBox Replace(strData, "置換", "検索")
End Sub
40 Shell 他のプログラムを実行します taskID = Shell("C:\WINDOWS\system32\calc.exe", vbNormalFocus)
41 Space スペースを取得します Sub Main
    Dim StrData1 As String
    Dim StrData2 As String
    StrData1 = "空白"
    StrData2 = "スペース"
    MsgBox StrData1 & Space(5) & StrData2    '結果:空白     スペース
End Sub
42 Split 区切り文字で文字列を分解し、配列の各要素に格納します Sub Main
    Dim StrData  As String
    Dim TblData  As Variant    '通常ケース
    Dim TblData2 As Variant    '分割数より区切り文字数が多いケース
    StrData = "品川/東京/上野/新宿"
    TblData  = Split(StrData, "/")
    TblData2 = Split(StrData, "/",2)  '分割数:2<区切り文字3

    For i = 0 To UBound(TblData)
        MsgBox TblData(i)    '配列(0)品川(1)東京(2)上野(3)新宿
    Next
    '分割数:2のため要素数は2(インデックス0と1)
    For i = 0 To UBound(TblData2)
        MsgBox TblData2(i)    '配列(0)品川(1)東京/上野/新宿
    Next
End Sub
43 Str 数値を文字列に変換します Sub Main
    Dim StrData1 As String
    Dim StrData2 As String
    StrData1 = "3.5"
    StrData2 = "-5"
    MsgBox str(StrData1)    '結果:" 3.5"(数値の前に半角スペース有)
    MsgBox str(StrData2)    '結果:"-5"
End Sub
44 StrConv 文字列をさまざまな形式に変換します Sub Main
    Dim StrData As String
    StrData = "This is a Pen"
    '小文字→大文字
    MsgBox strconv(StrData, vbUpperCase)  '結果:"THIS IS A PEN"
    '単語の先頭大文字変換と半角→全角大文字
    MsgBox strconv(StrData, vbProperCase + vbWide)
                            '結果:"This Is A Pen"
End Sub
45 String 文字列の先頭文字を繰り返します Sub Main
    Dim StrData As String
    StrData = String(3, "This")
    MsgBox StrData      '結果:"TTT"
End Sub
46 StrReverse 指定した文字列を逆に並べ替えます Sub Main
    Dim StrData As String
    StrData = "指定した文字列 ABC"
    MsgBox StrReverse (StrData)    '結果:"CBA 列字文たし定指"
End Sub
47 Timer 午前0時からの経過時間を取得します Sub Main
    Dim lngTimer1 As Long
    Dim lngTimer2 As Long
    lngTimer = Timer
    MsgBox "マクロ実行からボタンをクリックするまでの時間をカウントします"
    lngTimer2 = Timer
    MsgBox "経過時間は、  " & lngTimer2 - lngTimer1 & "  秒です"
End Sub
48 TimeSerial 時分秒の数値から時刻を取得します Sub Main
    MsgBox TimeSerial(1,20,30)    '"01:20:30"
    MsgBox TimeSerial(17,35,0)    '"17:35:00"
End Sub
49 TimeValue 文字列から時刻データを取得します Sub Main
    MsgBox TimeValue("1:20:30")        '"01:20:30"
    MsgBox TimeValue("5:35:00午後")    '"17:35:00"
    MsgBox TimeValue("午後5:35:00")    '"17:35:00"(OOoではエラー)
    MsgBox TimeValue("5:35:00 PM")      '"17:35:00"(OOoではエラー)
End Sub
50

Ucase

LCase

文字列の大文字/小文字を変換します Sub Main
    MsgBox UCase("AlphaA1")     '"ALPHAA1"
    MsgBox Lcase("ALPHAA1")  '"alphaa1"
End Sub
51 Val 文字列を数値に変換します Sub Main
    MsgBox Val("12.3")    '12.3
    MsgBox Val("-12")    '-1
    MsgBox Val("1A")      '1
    MsgBox Val("A1")      '0
End Sub
52 Weekday 週の開始曜日を1とした曜日の値を取得します Sub Main
    MsgBox WeekDay("2010/1/1")              '6  (日曜基準)
    MsgBox WeekDay("2010/1/1", vbMonday)    '5  (月曜基準)
End Sub
53 WeekDayName 曜日名を取得します Sub Main
    MsgBox WeekdayName (1)              '"日曜日"  (日曜基準)
    MsgBox WeekdayName (3,True)         '"火"      (月曜基準)
    MsgBox WeekdayName (3,,2)           '"水曜日"  (月曜基準)
End Sub
54

Year

Month

Day

日付から年,月,日を取得します Sub Main
    MsgBox Year(Now)
    MsgBox Month(Now)
    MsgBox Day(Now)
End Sub

 

★パスワード保護領域について

 

一部の記事に関しては、パスワード保護をかけております。パスワード保護領域の記事を閲覧していただくには事前ユーザー登録が必須となります。

下記より事前ユーザー登録をお願い致します。

 

事前ユーザー登録(無料)