Private Sub Workbook_Open()
Set oCbarEvents = Application.CommandBars
Application.EnableEvents = False
Dim Sh As Worksheet
For Each Sh In Worksheets
If Sh.Name = "Property Numbering" Then
Sh.Protect UserInterFaceOnly:=True, AllowSorting:=True, AllowFiltering:=True
Sh.Range("C14,C8").ClearContents
Sh.Range("B2").Value = "'Property Reference Guide (Click Arrow to Start)"
Sh.Range("C14,C8").Value = "'Choose"
ElseIf Sh.Name = "VO Areas" Then
Sh.Protect UserInterFaceOnly:=True, AllowSorting:=True, AllowFiltering:=True
Sh.Range("C4").ClearContents
Sh.Range("C4").Value = "'Choose"
Else
Sh.Protect UserInterFaceOnly:=True
End If
Next
Application.EnableEvents = True
End Sub
Private WithEvents oCbarEvents As CommandBars
#If VBA7 Then
Private Declare PtrSafe Function GetClipboardSequenceNumber Lib "user32" () As Long
#Else
Private Declare Function GetClipboardSequenceNumber Lib "user32" () As Long
#End If
Private Const TARGET_SHEET As String = "Clipboard"
Private Const TARGET_RANGE As String = "C4:C8,C10,C13,C16,C19,E4,E7,E10,E13,G10,G13"
Private Const TARGET_INFO_RANGE As String = "E16"
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Set oCbarEvents = Application.CommandBars
End Sub
Private Sub oCbarEvents_OnUpdate()
Static lPrevSN As Long
Static bFormatted As Boolean
Dim MyDataObject As Object
Dim lCutCopy As Long
Dim sClipText As String
If GetClipboardSequenceNumber <> lPrevSN Then
If Application.CutCopyMode <> False Then
With Sheets(TARGET_SHEET)
lCutCopy = Application.CutCopyMode
If Not Intersect(ActiveWindow.RangeSelection, .Range(TARGET_RANGE)) Is Nothing Then
Set MyDataObject = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
MyDataObject.GetFromClipboard
sClipText = MyDataObject.GetText(1)
Mid(sClipText, Len(sClipText), 1) = vbNullChar
If bFormatted = False Or IsEmpty(.Range(TARGET_INFO_RANGE)(1)) Then
Call FormatInfoRange(bFormatted)
End If
.Range(TARGET_INFO_RANGE)(2) = ActiveWindow.RangeSelection.Address
.Range(TARGET_INFO_RANGE)(4) = sClipText
Set oCbarEvents = Nothing
If lCutCopy = 1 Then
ActiveWindow.RangeSelection.Copy
Else
ActiveWindow.RangeSelection.Cut
End If
Set oCbarEvents = Application.CommandBars
End If
End With
End If
End If
lPrevSN = GetClipboardSequenceNumber
End Sub
Private Sub FormatInfoRange(ByRef Formatted As Boolean)
With Sheets(TARGET_SHEET)
.Range(TARGET_INFO_RANGE)(1).VerticalAlignment = xlTop
.Range(TARGET_INFO_RANGE)(3).VerticalAlignment = xlTop
.Range(TARGET_INFO_RANGE)(1).Font.Bold = True
.Range(TARGET_INFO_RANGE)(3).Font.Bold = True
.Range(TARGET_INFO_RANGE)(1).Font.Color = vbRed
.Range(TARGET_INFO_RANGE)(3).Font.Bold = True
.Range(TARGET_INFO_RANGE)(3).Font.Color = vbRed
.Range(TARGET_INFO_RANGE)(1) = "Address:="
.Range(TARGET_INFO_RANGE)(3) = "Clipborad text:="
.Range(TARGET_INFO_RANGE).EntireColumn.AutoFit
End With
Formatted = True
End Sub