| 
    
     |  | ▼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
 >
 >的はずれでしたらすいません。
 
 
 回答していただいた長文に対して失礼なんですが、解説していただけない
 でしょうか(^^;。
 
 |  |