Excel精英培训网

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

[已解决]在指定单元格区域内的单元格中输入指定的字符个数字符后,自动跳到下一单元格

[复制链接]
发表于 2013-11-13 11:40 | 显示全部楼层 |阅读模式
5学分
本帖最后由 假绅士 于 2013-11-14 09:18 编辑

假设我需要在sheet1工作表中填写数据,而A4:J4中每个单元格只能输入一个数字,输入完毕后自动跳转到下一单元格,直至输入到J4结束。如果同时可以实现在A4:J4单元格区域中从左到右第一个不为空的单元格自动添加人民币符号最好。我见过在一个工作表中都满足这个要求的表格,但是不知道怎么该成指定区域。新手,就这点金币了,请大侠们见谅!详情请见附件
最佳答案
2013-11-14 08:15
本帖最后由 sgxb123431380 于 2013-11-14 08:23 编辑

看看是不是你要的,蓝字的地方是对范围的限定,我是给你限定到G6:Q6了,你可以自己再改位置
在ThisWorkbook中写入下面的代码
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    For i = 96 To 105
        Application.OnKey "{" & i & "}"
    Next i
    If Selection.Row = 6 And Selection.Column > 6 And Selection.Column < 18 Then
        For i = 96 To 105
            Application.OnKey "{" & i & "}", "tz" & i - 96
        Next i
    End If
End Sub
新建一个Module1写入下面的代码
Public Sub tz0(): Call tz(0): End Sub
Public Sub tz1(): Call tz(1): End Sub
Public Sub tz2(): Call tz(2): End Sub
Public Sub tz3(): Call tz(3): End Sub
Public Sub tz4(): Call tz(4): End Sub
Public Sub tz5(): Call tz(5): End Sub
Public Sub tz6(): Call tz(6): End Sub
Public Sub tz7(): Call tz(7): End Sub
Public Sub tz8(): Call tz(8): End Sub
Public Sub tz9(): Call tz(9): End Sub
Public Function tz(n)
    ActiveCell = n
    If Cells(ActiveCell.Row, ActiveCell.Column - 1) = "" Then Cells(ActiveCell.Row, ActiveCell.Column - 1) = "$"
    Cells(ActiveCell.Row, ActiveCell.Column + 1).Select
End Function

Book2.rar

7.83 KB, 下载次数: 184

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-11-13 13:56 | 显示全部楼层
第一个要求连续入力那个只要你选中那个范围~然后输入一个按回车就是横着走了
第二个要求没太看懂,能举个实际完成的效果上传上来吗?
回复

使用道具 举报

 楼主| 发表于 2013-11-13 14:45 | 显示全部楼层
sgxb123431380 发表于 2013-11-13 13:56
第一个要求连续入力那个只要你选中那个范围~然后输入一个按回车就是横着走了
第二个要求没太看懂,能举个实 ...

我上传个截图,现在G6到Q6我可以用箭头来控制左右,但是为了方便我希望它可以自动跳转 QQ截图20131113143823.png
回复

使用道具 举报

发表于 2013-11-14 08:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sgxb123431380 于 2013-11-14 08:23 编辑

看看是不是你要的,蓝字的地方是对范围的限定,我是给你限定到G6:Q6了,你可以自己再改位置
在ThisWorkbook中写入下面的代码
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    For i = 96 To 105
        Application.OnKey "{" & i & "}"
    Next i
    If Selection.Row = 6 And Selection.Column > 6 And Selection.Column < 18 Then
        For i = 96 To 105
            Application.OnKey "{" & i & "}", "tz" & i - 96
        Next i
    End If
End Sub
新建一个Module1写入下面的代码
Public Sub tz0(): Call tz(0): End Sub
Public Sub tz1(): Call tz(1): End Sub
Public Sub tz2(): Call tz(2): End Sub
Public Sub tz3(): Call tz(3): End Sub
Public Sub tz4(): Call tz(4): End Sub
Public Sub tz5(): Call tz(5): End Sub
Public Sub tz6(): Call tz(6): End Sub
Public Sub tz7(): Call tz(7): End Sub
Public Sub tz8(): Call tz(8): End Sub
Public Sub tz9(): Call tz(9): End Sub
Public Function tz(n)
    ActiveCell = n
    If Cells(ActiveCell.Row, ActiveCell.Column - 1) = "" Then Cells(ActiveCell.Row, ActiveCell.Column - 1) = "$"
    Cells(ActiveCell.Row, ActiveCell.Column + 1).Select
End Function

评分

参与人数 2 +7 收起 理由
yyyydddd8888 + 6 赞一个!
假绅士 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-11-14 09:09 | 显示全部楼层
sgxb123431380 发表于 2013-11-14 08:15
看看是不是你要的,蓝字的地方是对范围的限定,我是给你限定到G6:Q6了,你可以自己再改位置
在ThisWorkboo ...

谢谢你,我先试试
回复

使用道具 举报

 楼主| 发表于 2013-11-14 09:14 | 显示全部楼层
本帖最后由 假绅士 于 2013-11-14 09:17 编辑
sgxb123431380 发表于 2013-11-14 08:15
看看是不是你要的,蓝字的地方是对范围的限定,我是给你限定到G6:Q6了,你可以自己再改位置
在ThisWorkboo ...

谢谢,这个的确就是我想要的结果,非常完美!

回复

使用道具 举报

发表于 2013-11-14 10:16 | 显示全部楼层
假绅士 发表于 2013-11-14 09:14
谢谢,这个的确就是我想要的结果,非常完美!

对了,忘记说了,这个只对小键盘的数字好用,不过因为考虑到一般这么输入的都是用小键盘的所以应该不会有什么影响吧
回复

使用道具 举报

 楼主| 发表于 2013-11-14 10:30 | 显示全部楼层
本帖最后由 假绅士 于 2013-11-14 10:32 编辑
sgxb123431380 发表于 2013-11-14 10:16
对了,忘记说了,这个只对小键盘的数字好用,不过因为考虑到一般这么输入的都是用小键盘的所以应该不会有 ...

我们用的就是小键盘,这个没有关系。能不能帮我对这些语句做下注释,新手,这个东西很难看懂,我还有很对类似的表需要同样的处理。还有,可不可以让Q6输入完成之后,输入框定格到B2单元格。谢谢
回复

使用道具 举报

 楼主| 发表于 2013-11-14 11:36 | 显示全部楼层
sgxb123431380 发表于 2013-11-14 10:57

非常感谢您的回答,最后一个问题,如何对指定区域做宏指令,我在您的宏指令里边并没有看到指定相关区域的命令,这个怎么做?
回复

使用道具 举报

发表于 2013-11-14 12:35 | 显示全部楼层
假绅士 发表于 2013-11-14 11:36
非常感谢您的回答,最后一个问题,如何对指定区域做宏指令,我在您的宏指令里边并没有看到指定相关区域的 ...

If Selection.Row = 6 And Selection.Column > 6 And Selection.Column < 18 Then
这句就是.row是行.column是列
这里面写的就是行是第6行,列是在6到18之间,不包括6和18,第7列是G,第17列是Q,所以你只要改这个就可以变更范围了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 13:54 , Processed in 0.382879 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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