Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4158|回复: 11

[已解决]用vba如何解决输入姓名时没有空格

[复制链接]
发表于 2012-8-10 08:39 | 显示全部楼层 |阅读模式
比如a列是姓名,在a列中输入姓名“张三”,在张三的前面、中间、后面都不能有空格,用vba如何做到?
最佳答案
2012-8-10 09:38
本帖最后由 hrpotter 于 2012-8-10 09:42 编辑
水上漂123 发表于 2012-8-10 09:24
首先谢谢各位的热情帮助,上面说的方法我都用过了,我现在只是想用vba如何实现,再次感谢大家
工作表change事件
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Application.EnableEvents = False
  3.     If Target.Column <> 1 Then Exit Sub
  4.     If InStr(Target, " ") Then
  5.         MsgBox "输入的姓名不能有空格,请重新输入!"
  6.         Target = ""
  7.         Target.Select
  8.     End If
  9.     Application.EnableEvents = True
  10. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-8-10 08:41 | 显示全部楼层
难道你在输入"张三"的时候还会手动 输入几个空格??

这个可以用 Change 事件,输入完内容后,用函数把 空格 都替换掉就行了
回复

使用道具 举报

发表于 2012-8-10 08:45 | 显示全部楼层
回复

使用道具 举报

发表于 2012-8-10 08:49 | 显示全部楼层
数据有效性:   就可实现 公式为 =LEN(TRIM(A1))=LEN(A1)
条件格式亦可
回复

使用道具 举报

 楼主| 发表于 2012-8-10 08:52 | 显示全部楼层
不是那个意思,我有一个表格,a列是输入姓名的,但是在输入姓名时有的老师随手先敲击一下空格然后输入“张三”,有的把张三输入成这样“张  三”,有的输入完张三后又敲击一下空格,然后再在下一个单元格中输入其他姓名,从a2开始到a3000都是学生的姓名,我是想像条件格式那样,如果出现上述三种情况不允许其输入,是我没有说明白,不好意思。
回复

使用道具 举报

发表于 2012-8-10 08:58 | 显示全部楼层
这不需要用VBA,查找——替换,就能解决
回复

使用道具 举报

发表于 2012-8-10 09:18 | 显示全部楼层
水上漂123 发表于 2012-8-10 08:52
不是那个意思,我有一个表格,a列是输入姓名的,但是在输入姓名时有的老师随手先敲击一下空格然后输入“张三 ...

数据有效性-自定义-公式
  1. =LEN(A1)=LEN(SUBSTITUTE(A1," ",""))
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-8-10 09:24 | 显示全部楼层
首先谢谢各位的热情帮助,上面说的方法我都用过了,我现在只是想用vba如何实现,再次感谢大家
回复

使用道具 举报

发表于 2012-8-10 09:38 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hrpotter 于 2012-8-10 09:42 编辑
水上漂123 发表于 2012-8-10 09:24
首先谢谢各位的热情帮助,上面说的方法我都用过了,我现在只是想用vba如何实现,再次感谢大家
工作表change事件
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Application.EnableEvents = False
  3.     If Target.Column <> 1 Then Exit Sub
  4.     If InStr(Target, " ") Then
  5.         MsgBox "输入的姓名不能有空格,请重新输入!"
  6.         Target = ""
  7.         Target.Select
  8.     End If
  9.     Application.EnableEvents = True
  10. End Sub
复制代码
回复

使用道具 举报

发表于 2012-8-10 10:17 | 显示全部楼层
Sub th()

    Cells.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-18 22:49 , Processed in 0.306720 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表