|    | 
     ▼Jカーター さん: 
>こんにちは。 
>全てのTextBoxに対応すべくクラスモジュールを使ってみました。 
>なお、メニューのボタンはイベントを使ってます。(2000以降限定かも?) 
> 
>ユーザーフォームモジュール 
>-------------------------------------------------------------------------- 
>Option Explicit 
>Private WithEvents CopyBtn As Office.CommandBarButton 
>Private WithEvents CutBtn As Office.CommandBarButton 
>Public WithEvents PasteBtn As Office.CommandBarButton 
>Public BarTmp       As Office.CommandBar 
>Public TxtTmp       As MSForms.TextBox 
>Private TxtBoxes()     As TxtBoxCLs 
>Const BARNAME       As String = "TXTMENU" 
> 
>'コピーボタン 
>Private Sub CopyBtn_Click( _ 
>  ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean) 
>  TxtTmp.Copy 
>  PasteBtn.Enabled = TxtTmp.CanPaste 
>End Sub 
> 
>'カットボタン 
>Private Sub CutBtn_Click( _ 
>  ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean) 
>  TxtTmp.Cut 
>End Sub 
> 
>'貼り付けボタン 
>Private Sub PasteBtn_Click( _ 
>  ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean) 
>  TxtTmp.Paste 
>End Sub 
> 
>Private Sub UserForm_Initialize() 
>  Dim ContItem As MSForms.Control 
>  Dim LngX   As Long 
>   
>  For Each ContItem In Me.Controls 
>    If TypeOf ContItem Is MSForms.TextBox Then 
>      ReDim Preserve TxtBoxes(LngX) 
>      Set TxtBoxes(LngX) = New TxtBoxCLs 
>      Set TxtBoxes(LngX).Txt = ContItem 
>      LngX = LngX + 1 
>    End If 
>  Next ContItem 
>   
>  Call BarDLt 
>  Call BarAdd 
>End Sub 
> 
>Private Sub UserForm_Terminate() 
>  Erase TxtBoxes 
>  Call BarDLt 
>  Set TxtTmp = Nothing 
>  Set BarTmp = Nothing 
>  Set CutBtn = Nothing 
>  Set CopyBtn = Nothing 
>  Set PasteBtn = Nothing 
>End Sub 
> 
>'メニュー削除 
>Private Sub BarDLt() 
>  On Error Resume Next 
>  Application.CommandBars(BARNAME).Delete 
>End Sub 
> 
>'メニュー作成 
>Private Sub BarAdd() 
>  Set BarTmp = Application.CommandBars.Add(BARNAME, msoBarPopup, , True) 
>  With BarTmp 
>    Set CutBtn = .Controls.Add(msoControlButton) 
>    Set CopyBtn = .Controls.Add(msoControlButton) 
>    Set PasteBtn = .Controls.Add(msoControlButton) 
>  End With 
>  CutBtn.Caption = "Cut(&T)" 
>  CutBtn.FaceId = 21 
>  CopyBtn.Caption = "Copy(&C)" 
>  CopyBtn.FaceId = 19 
>  PasteBtn.Caption = "Paste(&P)" 
>  PasteBtn.FaceId = 22 
>End Sub 
> 
>クラスモジュール(オブジェクト名TxtBoxCLs) 
>-------------------------------------------------------------------------- 
>Option Explicit 
>Private WithEvents xTxt As MSForms.TextBox 
> 
>Property Set Txt(ByVal TTmp As MSForms.TextBox) 
>  Set xTxt = TTmp 
>End Property 
> 
>'マウスアップイベント 
>Private Sub xTxt_MouseUp(ByVal Button As Integer, _ 
>  ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) 
>  If Button = 2 Then 
>    With UserForms(0) 
>      Set .TxtTmp = xTxt 
>      .PasteBtn.Enabled = xTxt.CanPaste 
>      .BarTmp.ShowPopup 
>    End With 
>  End If 
>End Sub 
> 
>的はずれでしたらすいません。 
 
 
回答していただいた長文に対して失礼なんですが、解説していただけない 
でしょうか(^^;。 
 | 
     
    
   |