在Excel里如何用VBA实现向任意一个单元格输入内容,再进行任意操作后,再向同一单元格输入内容,会用诸如“/”的符号隔开
会自动用诸如“/”的符号隔开不同次输入的内容?
代码不难。但是,有一个问题需要你考虑:
当你原来的数据是“XYZ”,在你选中这个单元格,然后又输入”XYZ“时,你怎么判断
这是【再次输入”XYZ“从而得到”XYZ/XYZ“】;
还是单元格没有变化依然是原本的【“XYZ”】?
下面这段代码是为你的设想制作的。
Public oldValue As VariantPrivate Sub Worksheet_Change(ByVal Target As Range)
If Target(1) = "" Or oldValue = "" Then Exit Sub
Application.EnableEvents = False
Target(1) = oldValue & "/" & Target(1)
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
oldValue = Target(1)
End Sub
保留了清除单元格的选择。。不过没有对作用区域做设定
追问对的,你真厉害,这就是我想要达到的效果,另外再麻烦问下,如果我想选中单元格,然后再按键盘上的退格键的时候,能否用退格键+数字形成的快捷键删除指定次数输入的内容
追答不知道你准备怎么操作呢?退格键{BackSpace}是没有办法和数字键形成组合键的,所以{退格键+数字}实际上形成了两次输入。
第一次,backspace会进入单元格编辑状态,并清除活动单元格的内容;
接着
第二次,数字键会进入单元格并保持编辑状态
编辑状态,Excel只能响应很少的事件
建议,使用其他组合键来完成这个需求。例子是使用{Alt+数字键}来模拟这个需求的。由于无法知道单元格中"////"会是第几次输入的(因为可能中间曾经被删除过),所以认定数字键是删除目前第几个“/”前的信息,
比如对于“x/y/z/a/b/c”的单元格,Alt+4就是删除“a”,VBA运行后,单元格变为“x/y/z/b/c”
代码被字数限制了,发不上来,自己看附件吧
Sheet1代码:
增加一个模块,模块代码:
附件可参考
alt+1是与现有的保存快捷键重复,alt+4是与现有的查找快捷键重复,我选中单元格,再按alt+其它数字也没反应?
追答你确定没反应?Alt+数字键只是个例子,你可以自行定义其他键。我也不厉害,只是喜欢探究。不过比较负责,不会没试过就乱回答。。因为不想误人子弟
输入公式B1=SUBSTITUTE(A1, " ", "/")
往下拖动。
公式意思就是表格内单元格里的一个空格置换成/ 。
如何怕错误,你可以改成置换两个空格。
你每次在输入数据前按一下空格(或2个空格),B列自动编程155/557/就/按时/685
或者你还想要其他效果?追问
不是呢,比如单元格输入了12,第二次输1时,在同一单元格就会12/1自动替换原来的12,是想达到这样的效果,
追答明白了 不会
如果是把指定数据或满足条件的数据保存到同一个单元格里倒是会的
在要实现功能的表格vba编辑器里输入代码:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Target.Value <> "" And Right(Target, 1) <> "/" Then
Target.Value = Target.Value & "/"
End If
End Sub
你试试,看看是不是你要的效果。
追问对的,你真厉害,这就是我想要达到的效果,另外再麻烦问下,如果我想选中单元格,然后再按键盘上的退格键的时候,能否用退格键+数字形成的快捷键删除指定次数输入的内容
追答这个很难吧,先不说如何实现,你按了退格键就会删除一部分东西了,如果再按数字就算达成目标那怎么控制指定次数呢?
来自:求助得到的回答不过 你每次 向 A1 赋值的时候 可以这样……
Range("A1")=Range("A1") &"/"& X
X 是你每次要输入的内容……追问
单击一个已经有内容的单元格再次输入内容时,会用新的内容替换掉原有内容,我不要这样,我要的是原有内容/新的内容替换掉原有内容,要怎样用VBA实现呢?
追答朋友!你再看看 ……难道这个不是 你要求的VBA 代码吗? 我的老天啊……I‘ll………………!!!!
Oh My…… 我似乎明白你的意思了……
回头再回答 暂时有事儿……
看看附件……
愿闻其详
追答帖主可能对于变量与赋值了解不深吧
比如
[A1]="QQ"
[A1]=[A1] & "57132899"
最终A1结果是什么呢?
a1的结果是qq57132899,是加qq详聊吧,我不要,说句难听的话不要生气,我很讨厌做广告、灌水,佩服会做的人,你直接做到百度云里,或把代码贴出来吧,百度知道不是为分享知识而存在的吗?少数几个人知道的知识不叫百度知道,