有点意思,做了个
Option 雀运亏Explicit
Dim strPre, s As String
Dim lastrange As String
Dim lCount As Long
Private Sub Worksheet_SelectionChange(ByVal Target 悄段As Range)
'第一次改变所选的单元格
If strPre <> ThisWorkbook.str And Not (lCount > 0) Then
lastrange = ThisWorkbook.str
Else
lastrange = strPre
End If
GetPreAddress Target.Address
If Target.Column = 2 Then
顷神 If lastrange = Target.Offset(0, -1).Address Then s = Format(Target.Offset(0, -1), "ddmmm") & "/" & Target
End If
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText s
.PutInClipboard
End With
End Sub
Sub GetPreAddress(strPreA As String)
strPre = strPreA
lCount = lCount + 1
End Sub
Thisworkbook:
Option Explicit
Public str As String
Private Sub Workbook_Open()
str = ActiveCell.Address
End Sub
录制宏
随便录制个宏,主要是设置快捷键
修改宏代码实现上面基本功能
每次选择桥或好之后,按快捷键实现
这个是比较方便的了
录制好后,把下面代码拷贝到函数内部即可
Dim cel As Range, tempStr As String
Dim i As Integer
蠢伏 i = 1
For Each cel In Selection
If i = 1 Then tempStr = tempStr & Format(cel, "ddmmm")
敏档伍 If i = 2 Then tempStr = tempStr & "/" & cel
i = i + 1
Next
我想,你的第一个点击的单元格日期,应该是在同一列的,如果是这样,不妨用单元格Change事件来做。
Alt+F11打开VBA编辑器
输入下面的代码
Dim rng As Range '用于记录上一次点击单元格
Dim strA
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column = 1 Then
Set rng = Target
拿桐禅 strA = Day(Target.Value) & Choose(Month(Target.Value), "Jan", "Feb", "Mar", "Apr"消尘, "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
Else
If Target.Column = 2 Then
If rng.Row = Target.Row Then
'Target.Offset(0, -1).NumberFormatLocal = "ddmmm"
Target.Offset(0, -1) = strA & "/" & Target
Target.ClearContents
Range(rng, Target).Select
Selection.Merge
Selection.Copy
End If
End If
End If
End If
End Sub
说明:只有在之前点同行A列,并轮晌且接着点同行B列时才能实现。