Excel精英培训网

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

[已解决]A列只能输入大写

[复制链接]
发表于 2011-9-3 07:42 | 显示全部楼层 |阅读模式
A列有数据有效性的
定义名称    数据=offset(sheet2!$A$1,,,counta(sheet2!$A:$A))

我的目的是,在A列不能输入小写,如;A2输入bf1a030000a   最好是自动变成BF1A030000A  有个不能输入小写的提示也行
最佳答案
2011-9-4 00:38
回复 huweifvba 的帖子

不好意思,确实如你所说,Sheet1中A列仍然可以手输入小写.

解决办法是在Sheet1中加入事件触发程序,步骤如下:

按Alt + F11进入VBE界面,双击Sheet1,把以下代码复制进代码框

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Alr As Long
Dim myrng As Range
Alr = Cells(Rows.Count, 1).End(xlUp).Row
Set myrng = Range(Cells(1, 1), Cells(Alr, 1))

For Each cel In myrng
cel.Value = UCase(cel.Value)
Next

Set myrng = Nothing
End Sub

保存工作簿退出.再打开工作簿后,应该就可以自动更改Sheet1中的A列所有单元格内容到大写字母
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-9-3 09:58 | 显示全部楼层
本帖最后由 adders 于 2011-9-2 21:03 编辑

回复 huweifvba 的帖子
如果A列已经有了有效性设定,那么你的要求只能对数据源(你的例子中,是Sheet2的A列)再设定只能输入大写字母

选中Sheet2的A1单元格,然后在菜单栏选择: (因我用英文版Excel,希望以下不影响你对操作的理解)

Data --> Validation
在Allow下的下拉框内选择Custom
然后在Formula框内输入: =EXACT(A1,UPPER(A1))
点OK

复制Sheet2的A1,选择性粘贴到Sheet2的A2:A65536
paste special --> Validation --> OK



回复

使用道具 举报

发表于 2011-9-3 19:02 | 显示全部楼层
本帖最后由 zjdh 于 2011-9-3 19:12 编辑

DH.JPG
回复

使用道具 举报

发表于 2011-9-3 19:03 | 显示全部楼层
再将A1复制到A列
回复

使用道具 举报

发表于 2011-9-3 19:18 | 显示全部楼层
楼主你发错版块了
回复

使用道具 举报

 楼主| 发表于 2011-9-3 21:41 | 显示全部楼层
回复 adders 的帖子

这么做也只能控制在sheet2不能输入小写吧,要Sheet1还是可以输入小写的
回复

使用道具 举报

发表于 2011-9-4 00:38 | 显示全部楼层    本楼为最佳答案   
回复 huweifvba 的帖子

不好意思,确实如你所说,Sheet1中A列仍然可以手输入小写.

解决办法是在Sheet1中加入事件触发程序,步骤如下:

按Alt + F11进入VBE界面,双击Sheet1,把以下代码复制进代码框

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Alr As Long
Dim myrng As Range
Alr = Cells(Rows.Count, 1).End(xlUp).Row
Set myrng = Range(Cells(1, 1), Cells(Alr, 1))

For Each cel In myrng
cel.Value = UCase(cel.Value)
Next

Set myrng = Nothing
End Sub

保存工作簿退出.再打开工作簿后,应该就可以自动更改Sheet1中的A列所有单元格内容到大写字母
回复

使用道具 举报

 楼主| 发表于 2011-9-5 08:15 | 显示全部楼层
回复 adders 的帖子

adders   如果我要控制J2到J6应该怎么改?  再帮我改下,谢谢了!
回复

使用道具 举报

发表于 2011-9-5 08:32 | 显示全部楼层
本帖最后由 adders 于 2011-9-4 19:37 编辑

回复 huweifvba 的帖子

如果同样是Sheet1的J2:J6,那么可以把这个范围加入myrng这个变量里.

效果就是A列所有单元格,以及J2:J6单元格自动变大写

如果你还需要让其他单元格自动调整到大写的话,只要把你想要的单元格范围加入到myrng这个变量里即可.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Alr As Long
Dim myrng As Range
Alr = Cells(Rows.Count, 1).End(xlUp).Row
Set myrng = Union(Range("A1:A" & Alr), Range("J2:J6"))

For Each cel In myrng
cel.Value = UCase(cel.Value)
Next

Set myrng = Nothing
End Sub

回复

使用道具 举报

发表于 2011-9-5 09:39 | 显示全部楼层
好好学习天天向上,时时进步刻刻成长!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 06:07 , Processed in 0.154248 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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