|
いつもお世話になります。
表題の件について教えてください。
ワークシート上でCELLを選択したとき、対象CELLが範囲内(7行から下、3列)であれば、ワークシート上にComboBox1を表示し、ComboBox1の選択内容に従い対象CELLと同じ行に所定操作を行うマクロを作成しています。
後述のマクロを作成して上記機能は満足しましたが、ワークシート上でCopy&Pasteが出来なくなって(Paste先へ移動することでSelectionChangeが働いて)しまうためWorksheet_BeforeRightClickに置き換えています。ただし、これも右クリックによる編集が出来ない、別動作についてSelectionChangeの方が都合が良いなどの理由からSelectionChangeを採用したいので、範囲外では編集できるよう対処方法をお教え下さい。
宜しくお願い致します。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
TR = .Row
TC = .Column
TT = .Top
TL = .Left
End With
If TC = 3 Then Cancel = True 'メニューを開かせない
If TR < 7 Then Exit Sub
If TC = 3 Then
With ComboBox1
Index_No = Cells(TR, 1).Value
If Index_No = "" Then
部材名Check = 1 '部材名が部材番号と適合変数
.Value = "選択して下さい" '初期設定用
.Top = TT
.Left = TL
.Visible = True
部材名Check = 0
ElseIf Index_No < 11 Then
MsgBox "Noが不正確です。11〜99の間で入力してください。"
Range(Cells(TR, 1), Cells(TR, 256)).ClearContents
部材名Check = 1 '部材名が部材番号と適合変数
.Value = "選択して下さい" '初期設定用
.Top = TT
.Left = TL
.Visible = True
部材名Check = 0
ElseIf Cells(TR,3) <> Worksheets("Sheet3").Cells(Index_No + 7,4)Then
部材名Check = 0
.Top = TT
.Left = TL
.Visible = True
.Value = Worksheets("Sheet3").Cells(Index_No + 7, 4).Value
Else
部材名Check = 1 '部材名が部材番号と適合変数
.Value = Worksheets("Sheet3").Cells(Index_No + 7, 4).Value
.Top = TT
.Left = TL
.Visible = True
部材名Check = 0
End If
End With
Else
ComboBox1.Visible = False
End If
End Sub
|
|