EXCEL VBA鼠标动作问题,请高手来帮忙!

EXCELVBA如何实现:连续点击两个单元格后,合并内容并复制到剪切板?第一个点击的单元格是日期格式,想将它的格式变为:“DDMMM”,后面再加上一个“/”,一同与点击的... EXCEL VBA 如何实现:连续点击两个单元格后,合并内容并复制到剪切板?
第一个点击的单元格是日期格式,想将它的格式变为:“DDMMM”,后面再加上一个“/”,一同与点击的第二个单元格中的内容合并,并复制到剪切板
比如
A1=6月6日,B1=AAA按顺序单击A1和B1后,将”6jun/AAA“复制到剪切板中?
展开
 我来答
ExcelPower
2016-06-28 · 专业Excel公式图表数据分析VBA
ExcelPower
采纳数:4495 获赞数:11864

向TA提问 私信TA
展开全部

有点意思,做了个

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


zzhilling
2016-06-28 · TA获得超过2701个赞
知道大有可为答主
回答量:3255
采纳率:45%
帮助的人:1127万
展开全部

录制宏

随便录制个宏,主要是设置快捷键

修改宏代码实现上面基本功能

每次选择好之后,按快捷键实现

这个是比较方便的了

 

录制好后,把下面代码拷贝到函数内部即可

    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
追问
首先,非常感谢您的回答帮助!
另,我需要的是鼠标点击后,自动将结束复制到剪切板,并不是新建一个模块手动运行宏。
我认为应将代码写在SHEET名下。
我是一个初级VBA新手,还请大侠帮忙,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-06-28
展开全部
我想,你的第一个点击的单元格日期,应该是在同一列的,如果是这样,不妨用单元格Change事件来做。
追问
比如
A1=6月6日,B1=AAA按顺序单击A1和B1后,将”6jun/AAA“复制到剪切板中?
如何编写?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lyouxin
2022-04-10
知道答主
回答量:17
采纳率:0%
帮助的人:2.5万
展开全部
  • 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列时才能实现。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式