EXCEL的VBA公式,求修改下
PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)DimrIfTarget.Column<>14OrTarge...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r
If Target.Column <> 14 Or Target.Count > 1 Then Exit Sub
If Target.Offset(0, 8) <= 0 And Target.Offset(0, 0) < Target.Offset(0, -6) Then
Target.Offset(0, 8) = Target.Offset(0, 8) + 1
r = Sheets("销售剩料").UsedRange.Rows.Count + 1
Target.EntireRow.Copy Sheets("销售剩料").Rows(r)
End If
End Sub
这里是在设定条件下,18列发生变化,则整行复制过去,然后这里想变成Target(0,X)-Target(0,Y)写到“销售剩料”的E2上去,Target(0,X)单独写到E3上去,然后下次还有这个事件,排列下去,然后E2不知道能不能用Target的形式写呢? 展开
Dim r
If Target.Column <> 14 Or Target.Count > 1 Then Exit Sub
If Target.Offset(0, 8) <= 0 And Target.Offset(0, 0) < Target.Offset(0, -6) Then
Target.Offset(0, 8) = Target.Offset(0, 8) + 1
r = Sheets("销售剩料").UsedRange.Rows.Count + 1
Target.EntireRow.Copy Sheets("销售剩料").Rows(r)
End If
End Sub
这里是在设定条件下,18列发生变化,则整行复制过去,然后这里想变成Target(0,X)-Target(0,Y)写到“销售剩料”的E2上去,Target(0,X)单独写到E3上去,然后下次还有这个事件,排列下去,然后E2不知道能不能用Target的形式写呢? 展开
2个回答
展开全部
1、这段代码应该是在点击14列时执行哦(不是18列)
2、如果要写在E2和e3上去,直接用赋值语句来完成嘛,不要用复制三。
3、不知道Target(0,X)-Target(0,Y)这是什么意思,因为这里用到两个单元格,不知道Target(0,X)-Target(0,Y)是不是指这两个单元格(Target.Offset(0, 8)和Target.Offset(0, -6))
4、因为没看见表,如果上面第三点成立的话,可以试试以下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r
If Target.Column <> 14 Or Target.Count > 1 Then Exit Sub
If Target.Offset(0, 8) <= 0 And Target.Offset(0, 0) < Target.Offset(0, -6) Then
Target.Offset(0, 8) = Target.Offset(0, 8) + 1
r = Sheets("销售剩料").Range("e65536").End(xlUp).Row + 1
Sheets("销售剩料").cells(r,"e")=Target.Offset(0, 8)-Target.Offset(0, -6)
Sheets("销售剩料").cells(r+1,"e")=Target.Offset(0, -6)
End If
End Sub
2、如果要写在E2和e3上去,直接用赋值语句来完成嘛,不要用复制三。
3、不知道Target(0,X)-Target(0,Y)这是什么意思,因为这里用到两个单元格,不知道Target(0,X)-Target(0,Y)是不是指这两个单元格(Target.Offset(0, 8)和Target.Offset(0, -6))
4、因为没看见表,如果上面第三点成立的话,可以试试以下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r
If Target.Column <> 14 Or Target.Count > 1 Then Exit Sub
If Target.Offset(0, 8) <= 0 And Target.Offset(0, 0) < Target.Offset(0, -6) Then
Target.Offset(0, 8) = Target.Offset(0, 8) + 1
r = Sheets("销售剩料").Range("e65536").End(xlUp).Row + 1
Sheets("销售剩料").cells(r,"e")=Target.Offset(0, 8)-Target.Offset(0, -6)
Sheets("销售剩料").cells(r+1,"e")=Target.Offset(0, -6)
End If
End Sub
追问
第1点是我没修改好,是14列
第2点是因为我是复制我其他工作表的公式过来的,那边是整行复制
第3点是两个相减的意思,这里这两个单元是Target(0,0)跟Target(0,-6)
第4点,这里我有几点不明白,代码中的e是不是指e列呢,那如果我是用F列,是不是修改F就可以呢?
追答
1、这里这两个单元格是Target(0,0)跟Target(0,-6)的话修改这一句为:Sheets("销售剩料").cells(r,"e")=Target.Offset(0, 0)-Target.Offset(0, -6)
2、e就是指E列,你是哪一列就修改为那一列的列标
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询