Office Web Componetをユーザフォームで使う - SpreadSheetコントロール
サンプルではOffice Web Componetのうち、SpreadSheetコントロールの特徴のい
くつかを紹介します。ユーザフォーム上でSpreadSheetコントロールを使う利点
は、フォーム中心のアプリケーション作成が可能なこと、ワークシートとは異な
るイベント(Mouse_Over,Key_Down,Before_Commandなど)やオブジェクトその
メンバが使用可能なことです。若干の制限と、ワークシートを扱う場合との処理
方法の違いがありますが、用途によって使い分けることで、より柔軟にアプリケ
ーションを開発することが可能となります。

(OWC SpreadSheetControlを使用可能にするには)
VBEでユーザフォームが選択された状態で”ツール”メニューから”その他の
コントロール”をクリック、”コントロールの追加”ダイアログで、
”Microsoft Office SpreadSheet 9.0”を選択して”OK”。”ツールボックスに”
表示されたアイコンを通常のコントロールと同様ユーザフォームにドラッグ&
ドロップで貼り付けてください。

(注)ユーザフォームを表示する際、”UserForm1.Show vbModeless”とするか、
ShowModalプロパティーをFalseにするとPropertyToolBoxが使用可能となります。

1.フォームの表示とシート保護

Private Sub UserForm_Initialize()

    'ワークシートからSpreadSheetコントロールへデータをコピー
    Sheet1.Range("a1").CurrentRegion.Copy

    With Me.Spreadsheet1
        .ActiveSheet.Range("a1").Paste
        'データ入力範囲のみ可視
        .ViewableRange = _
        .ActiveSheet.Range("a1").CurrentRegion.Address

        With .ActiveSheet
             'セルの保護※Protection.Enabled=Trueで有効
             .Cells.Locked = True

             'フィルタ,ソートを可能としてシート保護
            With .Protection
                .AllowFiltering = True
                .AllowSorting = True
            End With
    
            'Protectionを有効にする
            .Protection.Enabled = True

        End With
        .DisplayPropertyToolbox = True
    End With

End Sub

2.Key_Downイベントの使用

※イベントプロシージャの引数はすべてEvntinfoオブジェクト以下のプロパティー
から取得します。

⇒	(AltKey,Button,Command,Ctrl,Key,EditData,KeyChar,
	KeyCode,Range,ReturnValue,ShiftKey,X,Y)

Private Sub Spreadsheet1_KeyDown(ByVal EventInfo As OWC.SpreadsheetEventInfo)

    Dim Msg As String
    Select Case EventInfo.KeyCode
        Case vbKeyF2: Msg = "F2"
        Case vbKeyF3: Msg = "F3"
        Case vbKeyF4: Msg = "F4"
        Case Else: Exit Sub
    End Select

    MsgBox Msg

End Sub

3.コマンドのキャンセル(Before_Commandイベント)

Private Sub Spreadsheet1_BeforeCommand _
	(ByVal EventInfo As OWC.SpreadsheetEventInfo)

    'SpreadSheet上で実行されるコマンドのうちいくつかをReturnValueプロパティー
    'を用いて強制的にキャンセルします
    Select Case EventInfo.Command
        Case ssCalculate
        Case ssInsertRows: EventInfo.ReturnValue = False
        Case ssInsertColumns: EventInfo.ReturnValue = False
        Case ssDeleteRows: EventInfo.ReturnValue = False
        Case ssDeleteColumns: EventInfo.ReturnValue = False
        Case ssCut: EventInfo.ReturnValue = False
        Case ssCopy
        Case ssPaste
        Case ssExport
        Case ssUndo
        Case ssSortAscending
        Case ssSortDescending
        Case ssFind
        Case ssClear: EventInfo.ReturnValue = False
        Case ssAutoFilter
        Case ssProperties
    End Select

End Sub

Excel2000 ※Office2000



戻る


Excel Word Access VBA! モーグ