サンプルでは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
|