Excel精英培训网

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

[已解决]初次来此论坛 求助各位老师

[复制链接]
发表于 2010-5-17 17:31 | 显示全部楼层 |阅读模式

我在自己看VBA入门,下边一段代码在执行时会报错,我不知道错在哪里,请各位老师帮忙指教,多谢!!!

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim mrow As Integer
  Dim brng As String
  Dim crng As String
     
      mrow = Target.Row
      If Len(Range("B" & mrow)) > 0 And Len(Range("C" & mrow)) > 0 Then
        Target.Column >1 And Target.Column < 4
        brng = Range("b" & mrow).Address(0, 0)
        crng = Range("c" & mrow).Address(0, 0)
        Range("d" & mrow).Formula = "=" & brng & "-" & crng
      End If
End Sub

[此贴子已经被作者于2010-5-17 17:40:44编辑过]
最佳答案
2010-5-17 19:33
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim mrow As Integer
      mrow = Target.Row
      If Target.Count > 1 Then End
      If Len(Range("B" & mrow)) > 0 And Len(Range("C" & mrow)) > 0 Then
            Cells(mrow, 4) = Cells(mrow, 2) - Cells(mrow, 3)
        Else
            Cells(mrow, 4) = ""
      End If
End Sub
发表于 2010-5-17 17:43 | 显示全部楼层

Target.Column >1 And Target.Column < 4
这个地方是不是缺了某些语句?
回复

使用道具 举报

发表于 2010-5-17 18:31 | 显示全部楼层

Target.Column >1 And Target.Column < 4

多余,删除了就行,也可以是:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then End
    If Len(Range("B" & Target.Row)) And Len(Range("C" & Target.Row)) Then
       Range("d" & Target.Row).Formula = "=RC[-2]-RC[-1]"
    End If
End Sub

回复

使用道具 举报

发表于 2010-5-17 19:14 | 显示全部楼层

楼主自己看了也能写的那么好

回复

使用道具 举报

 楼主| 发表于 2010-5-17 19:21 | 显示全部楼层

谢谢这位朋友!这段代码的意思是在B和C列所选定的单元格都不为空时,D列所对应的单元格输入计算公式,当B和C两个单元格输入数据后,如果再删除其间的数据,D列会继续保留其公式和数据。我想1.怎么能在B和C两个单元格的其中之一个数据删除后,D列单元格就立刻清空。2.在对应的D列中怎么只输入的是所得数据,而不是输入的计算公式?劳驾你多指教,谢谢!
回复

使用道具 举报

发表于 2010-5-17 19:33 | 显示全部楼层    本楼为最佳答案   

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim mrow As Integer
      mrow = Target.Row
      If Target.Count > 1 Then End
      If Len(Range("B" & mrow)) > 0 And Len(Range("C" & mrow)) > 0 Then
            Cells(mrow, 4) = Cells(mrow, 2) - Cells(mrow, 3)
        Else
            Cells(mrow, 4) = ""
      End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2010-5-17 19:42 | 显示全部楼层

谢谢这位老师!我的那段代码为什么不能实现这样的功能呢?原因何在呀?能麻烦你给我解释一下吗?多谢!!!
回复

使用道具 举报

 楼主| 发表于 2010-5-17 20:05 | 显示全部楼层

这位朋友,我是刚开始接触VBA,很多东西还不明白,希望能得到论坛里各位老师的指教!
[此贴子已经被作者于2010-5-17 20:09:18编辑过]
回复

使用道具 举报

发表于 2010-5-17 20:08 | 显示全部楼层

你那段也行呀,就是多了一句: Target.Column >1 And Target.Column < 4
另外少了一个没有数据就等于空的判断

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 07:11 , Processed in 1.217108 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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