13 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 Call プロシージャを呼び出します Sub Main
    Dim intYear As Integer
    Dim intMonth As Integer
    Dim intDay As Integer
    intYear = 2010
    intMonth = 10
    intDay = 1
    Call DateCheck(intYear, intMonth, intDay)
End Sub

Sub DateCheck(intYear As Integer, intMonth As Integer, intDay As Integer)
    Msgbox DateSerial(intYear,intMonth,intDay)
End Sub
2 Do Until~Loop

条件を満たすまで繰返し処理を繰り返します

(前判定)

intCnt = 0
Do Until intCnt > 10
  intCnt = intCnt + 1
Loop
3 Do~Loop Until

条件を満たすまで繰返し処理を繰り返します

(後判定)

intCnt = 0
Do
  intCnt = intCnt + 1
Loop Until intCnt > 10
4 Do While~Loop

条件を満たしている間繰返し処理を繰り返します(前判定)

intCnt = 0
Do While intCnt <= 10
  intCnt = intCnt + 1
Loop
5 Do~Loop While

条件を満たしている間繰返し処理を繰り返します

(後判定)

intCnt = 0
Do
  intCnt = intCnt + 1
Loop While intCnt <= 10
6 Exit ループやプロシージャを終了します Do
  i = i + 1
  If cells(i,1) = "" Then
    Exit Do
  End If
Loop Until i = 10
7 For Each~Next 配列やコレクションに対して処理を繰り返します Dim Range1 As Range
For Each Range1 in Range("B6:B10")
  If IsNumeric(Range1.Value) Then
    Range1.NumberFormat = "#,###"
  End If
Next
8 For~Next 処理を指定した回数だけ繰り返します Dim i     As Integer
Dim Total As Integer
Total = 0
For i = 1 To 10
  Total = Total + i
Next
9 For Step~Next

処理を指定した回数だけ繰り返します

(STEP使用)

Dim i     As Integer
Dim Total As Integer
Total = 0
For i = 1 To 10 Step 2
  Total = Total + i
Next
10 GoSub~Return サブルーチンに制御を移します Sub Main
  Dim i     As Inte
  i = 10
  'サブルーチン呼出
  GoSub TwoTimes
  Exit Sub

'サブルーチン
TwoTimes:
  i = i * 2
  Return
End Sub
11 GoTo 指定した行に制御を移します Sub Main
  Dim i     As Integer
  'サブルーチン呼出
  For i = 1 To 10
    If IsNumeric(cells(i,1)) = False Then
      Goto ExceptNum
    End If
  Next
  Exit Sub

ExceptNum:
  Msgbox "数値以外の値が入っているセルがあります"
End Sub
12 If Then~End If 条件を判断して処理を分岐します(If) If Range("A1") >= 80 Then
  Range("B1").Value = "A"
ElseIf Range("A1") >= 50 Then
  Range("B1").Value = "B"
ElseIf Range("A1") >= 30 Then
  Range("B1").Value = "C"
Else
  Range("B1").Value = "D"
End If
13 Mid 文字列変数の一部を別の文字列に置換します Sub Main
    Dim strData As string
    strData = "文字列は置換します"
    Mid(strData, 4, 1) = "を"
    Msgbox strData
End Sub
14 On Error Resume Next エラーを無視して後続の処理を行います Sub Main()
  On Error Resume Next
  Worksheets(2).Name = "Sheet2"
  MsgBox "エラー発生" & Chr(13) & "エラーコード:" & Err.Number
  On Error GoTo 0
  MsgBox "終了"
End Sub
15 On Error GoTo エラー発生時に特定の処理を行います Sub Main()
  On Error GoTo ErrorHandler
  Worksheets(2).Name = "Sheet2"
  On Error GoTo 0
  MsgBox "終了"
  Exit Sub
ErrorHandler:
  MsgBox "エラー発生" & Chr(13) & "エラーコード:" & Err.Number
End Sub
16 On Error GoTo 0 エラー処理を通常状態に戻します Sub Main()
  On Error Resume Next
  Worksheets(1).Name = "Sheet1"
  On Error GoTo 0
  Worksheets(2).Name = "Sheet2"
  MsgBox "終了"
End Sub
17 Option Compare Text

文字列データの比較方法をテキストモードに設定します

Option Compare Text
18 Option Compare Binary 文字列データの比較方法をバイナリモードに設定します Option Compare Binary
19 Randomize 乱数系列を初期化します Randomize Time/3
20 Resume エラーの発生位置に戻り、再度処理を実行します Sub Err_Test
    On Error GoTo Err_Handler
     Worksheets(2).Delete
     MsgBox "処理を終了します"
Exit Sub

'エラー発生時はワークシートを1枚追加
Err_Handler:
  Worksheets(1).Copy After:=Worksheets(1)
  Resume
End Sub
21 Select Case~End Select 条件を判断して処理を分岐します(Case) Select Case Range("A1")
  Case Is >= 80
    Range("B1").Value = "A"
  Case Is  >= 50
    Range("B1").Value = "B"
  Case Is >= 30
    Range("B1").Value = "C"
  Case Else
    Range("B1").Value = "D"
End Select
22 With~End With 同一オブジェクトの記述を簡潔にします With Font
  .Size = 14      'SizeはFont.Sizeとなります
  .Bold = True    'BoldはFont.Boldとなります
End With

 

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

 

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

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

 

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