Excel精英培训网

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

[已解决]关于自动录入的问题

[复制链接]
发表于 2014-4-6 10:01 | 显示全部楼层 |阅读模式
本帖最后由 nior 于 2014-4-6 10:04 编辑

比如在A1输入+,B1自动录入-;要是在A1输入-,B1自动录入+。并且在B1输入时,A1同样会自动录入相反的运算符号

target参数怎么用?
最佳答案
2014-4-6 10:16
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column = 1 Then
  3. If Target.Value = "+" Then Target.Cells(1, 2) = "-"
  4. If Target.Value = "-" Then Target.Cells(1, 2) = "+"
  5. Else
  6. If Target.Column = 2 Then
  7. If Target.Value = "+" Then Target.Cells(1, 0) = "-"
  8. If Target.Value = "-" Then Target.Cells(1, 0) = "+"
  9. End If
  10. End If
  11. End Sub
复制代码
输入“+”和“-”前面要加‘
发表于 2014-4-6 10:16 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column = 1 Then
  3. If Target.Value = "+" Then Target.Cells(1, 2) = "-"
  4. If Target.Value = "-" Then Target.Cells(1, 2) = "+"
  5. Else
  6. If Target.Column = 2 Then
  7. If Target.Value = "+" Then Target.Cells(1, 0) = "-"
  8. If Target.Value = "-" Then Target.Cells(1, 0) = "+"
  9. End If
  10. End If
  11. End Sub
复制代码
输入“+”和“-”前面要加‘

评分

参与人数 1 +1 收起 理由
nior + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-4-6 10:19 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Application.EnableEvents = False
  3.     If Target.Address = "$A$1" Then
  4.         Select Case Target
  5.         Case "+": Target.Offset(0, 1) = "-"
  6.         Case "-": Target.Offset(0, 1) = "+"
  7.         End Select
  8.     End If
  9.     If Target.Address = "$B$1" Then
  10.         Select Case Target
  11.         Case "+": Target.Offset(0, -1) = "-"
  12.         Case "-": Target.Offset(0, -1) = "+"
  13.         End Select
  14.     End If
  15.     Application.EnableEvents = True
  16. End Sub

复制代码

工作簿1.rar

12.7 KB, 下载次数: 9

评分

参与人数 1 +1 收起 理由
nior + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-4-6 10:33 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column < 3 Then
  3.     x = Target.Column
  4.     y = IIf(x = 1, 1, -1)
  5.     If Target = "+" Then Target.Offset(0, y) = "-"
  6.     If Target = "-" Then Target.Offset(0, y) = "+"
  7. End If
  8. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
nior + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-4-6 10:36 | 显示全部楼层
本帖最后由 nior 于 2014-4-6 10:38 编辑
冠军欧洲2010 发表于 2014-4-6 10:19

老师,第2行和第15行的那个让事件失效生效能解释下吗,不太懂

为什么我的sheet中没有Option Explicit这个呢
回复

使用道具 举报

发表于 2014-4-6 10:46 | 显示全部楼层
1、这两句代码,就是禁止事件程序,和启用事件程序啊。
2、Visual Basic编辑器,工具,选项,要求变量声明前的勾打上就有了。
回复

使用道具 举报

 楼主| 发表于 2014-4-6 10:54 | 显示全部楼层
qh8600 发表于 2014-4-6 10:16
输入“+”和“-”前面要加‘

我刚试了,这对整个AB列内输入都可以,不过当是第二列是为什么cells是(1,0)呢,cells(a,b)是相对引用还是绝对?
回复

使用道具 举报

 楼主| 发表于 2014-4-6 11:05 | 显示全部楼层
dsmch 发表于 2014-4-6 10:33

嗯,学习了,谢谢!
回复

使用道具 举报

发表于 2014-4-6 11:21 | 显示全部楼层
nior 发表于 2014-4-6 10:54
我刚试了,这对整个AB列内输入都可以,不过当是第二列是为什么cells是(1,0)呢,cells(a,b)是相对引用还是 ...

Target.Column .cells(1.1)就是产生事件的单元格
cells(1,1)就是相对于产生事件单元格的位置
向上1行就是减1向下就是加1
向左就是减1,向右就是加1
比如target.cells(1,0)就是产生事件的单元格为基点,行不变,列向右移动1列的单元格
如果只在第1行产生事件
判断加上Target.row=1



回复

使用道具 举报

 楼主| 发表于 2014-4-6 13:10 | 显示全部楼层
本帖最后由 nior 于 2014-4-6 13:20 编辑
qh8600 发表于 2014-4-6 11:21
Target.Column  .cells(1.1)就是产生事件的单元格
cells(1,1)就是相对于产生事件单元格的位置
向上1行就 ...

嗯,终于理解了,+1,-1是在cells(1,1)的基础上吧,比如target.cells(1,2)是向右移动一列,target.cells(1,0)是向左移动一列,target.cells(2,1)是向下移动一行,target.cells(0,1)是向上移动一行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 08:52 , Processed in 0.320560 second(s), 20 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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