トップ > 学習するには > サンプル問題 > サンプル問題:VBA Professional Office 2003

サンプル問題:VBA Professional Office 2003

VBA エキスパート Professional 試験は、Office System としての活用を推進し、エンドユーザーの作業効率を最大に引き出すシステムデベロパーとしての役割を果たしている方を対象とします。
Excel や Access といった単体のアプリケーションを利用するというだけではなく、他のアプリケーションとの連携、他のデータベースへの接続、さらに、Office アプリケーションをバージョンアップするマイグレーションなど多岐に渡ります。
また、設問についても、VBA に関する知識はもちろん、エラー処理やプログラムの高速化に関する問題など、より実践的な内容となります。

この科目の試験概要をみる

サンプル問題

サンプル問題1

次のプロシージャの実行結果として、正しいものを1つ選びなさい。

Sub Sample1()
    Dim myRange As Range

    On Error Resume Next ――①
    If myRange = Null Then ――②
    Debug.Print "OK"  ――③
    Else
        Debug.Print "NO" ――④
    End If

End Sub
  1. エラーは発生せず、変数myRangeはNullではないので、④のステートメントが実行される。
  2. ②のステートメントでエラーが発生するが、①のステートメントがあるため、エラーが回避され、③のステートメントが実行される。
  3. ②のステートメントでエラーが発生するが、①のステートメントがあるため、エラーが回避され、④のステートメントが実行される。

サンプル問題2

次の3つのプロシージャは、すべて変数myBufに同じ文字列を代入する処理を行う。もっとも処理速度の遅いプロシージャを1つ選びなさい。


  1. Sub Sample1()
        Const fCOUNT As Long = 1000000
        Dim i As Long, j As Long
        Dim myRowBuf As String
        Dim myLen As Long
        Dim myBuf As String
        Dim myTmpStr As String
    
        myRowBuf = "Excel"
        myLen = Len(myRowBuf) * fCOUNT + fCOUNT * 3
    
        myBuf = String(myLen, vbNullChar)
    
        For i = 1 To fCOUNT
            myTmpStr = myRowBuf & "1" & vbCrLf
            Mid(myBuf, j + 1, Len(myTmpStr)) = myTmpStr
            j = j + Len(myTmpStr)
        Next
    End Sub

  2. Sub Sample2()
        Const fCOUNT As Long = 1000000
        Dim i As Long
        Dim myRowBuf(1 To fCOUNT) As String
        Dim myBuf As String
    
        For i = 1 To fCOUNT
            myRowBuf(i) = "Excel" & "1"
        Next
    
        myBuf = Join(myRowBuf, vbCrLf)
    End Sub

  3. Sub Sample3()
        Const fCOUNT As Long = 1000000
        Dim i As Long
        Dim myRowBuf As String
        Dim myBuf As String
    
        myRowBuf = "Excel"
    
        For i = 1 To fCOUNT
            myBuf = myBuf & vbCrLf & myRowBuf & "1"
        Next
    
    End Sub

サンプル問題3

次のそれぞれのコードによって定義されるクラスは、人を表すクラスで、データとして氏名を保持している。このとき、データである変数myNameがカプセル化されているものをすべて選びなさい。


  1. Public myName As String

  2. Private myName As String
    
    Public Property Get personName() As String
        personName = myName
    End Property
    
    Public Property Let personName(ByVal myNewName As String)
        myName = myNewName & "さん"
    End Property

  3. Private myName As String
    
    Public Property Get personName() As String
      personName = myName
    End Property
    
    Public Property Let personName(ByVal myNewName As String)
      If Len(myNewName) < 2 Then Exit Property
      myName = myNewName
    End Property

サンプル問題4

次の、まったく同じ処理を行う4つのプロシージャの中から、もっとも編集効率が良いものを1つ選びなさい。


  1. Function Sample1(price As Currency) As Currency
        Sample1 = price + price * 0.05
    End Function

  2. Function Sample2(price As Currency) As Currency
        Dim taxRate As Currency
        taxRate = 0.05
        Sample2 = price + price * taxRate
    End Function

  3. Function Sample3(price As Currency) As Currency
        Const taxRate As Currency = 0.05
        Sample3 = price + price * taxRate
    End Function

  4. Function Sample4(price As Currency) As Currency
        Const taxRate As Currency = 0.05    '消費税率
        Sample4 = price + price * taxRate
    End Function

サンプル問題5

次のプロシージャは、XMLファイルのデータを、新規ブックにリスト形式で開くものである。に入るものを1つ選びなさい。

Sub Sample()
    Application.DisplayAlerts = False
    Workbooks.(        ) Filename:="C:\Sample.xml", _
        LoadOption:=xlXmlLoadImportToList
    Application.DisplayAlerts = True
End Sub
  1. Open Format:=xlXMLSpreadsheet,
  2. Open
  3. OpenXML Format:=xlXMLspreadsheet
  4. OpenXML

サンプル問題6

Excel2003で搭載されたウィンドウを[並べて比較する]機能で、並べて比較するブックを同時にスクロールするかどうかを指定するSyncScrollingSideBySideプロパティの説明について、正しいものを1つ選びなさい。

  1. Windowオブジェクトのプロパティで、同時にスクロールする場合は、Trueを指定する
  2. Windows コレクションのプロパティで、同時にスクロールする場合は、Trueを指定する
  3. Workbooksコレクションのプロパティで、同時にスクロールする場合は、Trueを指定する

サンプル問題7

次の中から、ワークシート上にActiveXコントロールを配置することで、自動的に参照設定されるライブラリの名前を1つ選びなさい。

  1. MSForms
  2. MSForm
  3. Forms
  4. Form

サンプル問題8

次のプロシージャは、指定したMDBデータベースのテーブルのレコード件数を取得して、イミディエイトウィンドウに表示するものである。
に入る値として、適切なものを1つ選びなさい。なお、ADODBライブラリに対して参照設定しているものとする。

Sub Sample()
Dim myConnection As ADODB.Connection Set myConnection = New ADODB.Connection With myConnection .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=C:\Sample.mdb" .Open End With With New ADODB.Recordset Set .ActiveConnection = myConnection .Source = "T_Sample" .CursorType = ( ) .Open Debug.Print .RecordCount .Close End With myConnection.Close Set myConnection = Nothing End Sub
  1. adOpenDynamic
  2. adOpenStatic
  3. adOpenForwardOnly

サンプル問題9

次の中から、WordライブラリのApplicationクラスで定義されていないメンバをすべて選びなさい。

  1. Resizeメソッド
  2. EnableAutoCompleteプロパティ
  3. Chartsプロパティ
  4. FontNamesプロパティ
  5. 1~4のすべてのメンバが定義されている

サンプル問題10

SHDocVwライブラリのInternetExplorerクラスで定義されているプロパティで、現在表示されているページのURLを表すプロパティはどれか。1つ選びなさい。

  1. CurrentURL
  2. LocationURL
  3. URLName