EXCEL的VBA公式,求修改下

Private Sub CheckBox1_Click() '回收
End Sub
Private Sub CommandButton1_Click() '立即结算
End Sub
Private Sub TextBox1_Change() '克重
End Sub
Private Sub TextBox2_Change() '金价
End Sub
PS:业务需要,有时需要输入回收的克重跟金价,上面如果不需要输入,则点“立即结算”,则运行之后的公式,如果需要输入,则要“回收”打钩,然后写入“克重”跟”金价”,再点“立即结算”,则“克重”输入到Target.offset(0,19),“金价”输入到Target.offset(0,20)下面是主代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 16 Or Target.Count > 1 Then Exit Sub
If Target.Offset(0, 6) <= 1 And Target.Offset(0, -2) <> "" Then
UserForm2.Show
Target.Offset(0, -5) = Target.Offset(0, -2) * (Target.Offset(0, -11) + Target.Offset(0, -7))
Target.Offset(0, 5) = Target.Offset(0, -1) + Target.Offset(0, 4) * Target.Offset(0, 3) - Target.Offset(0, -5)
End Sub

既然你写了窗口事件,那么建议把之后的代码写到CommandButton1_Click事件里面去,这样比较规整一点,在点击关闭后也就不会进行计算
还有你的第二个if怎么没有end if结束?追问

这个已经是搞定的了,这里你回答个问题分数你的,就是窗体,不是有个关闭嘛,然后要写如果按关闭,则在工作簿的代码中,“窗体.show”之后的代码,全部停止或取消,这里是工作簿的代码使用到“窗体.show”哟,能理解我的意思吧

追答

建议把之后的代码写到CommandButton1_Click事件里面去,如果用户按了关闭窗口,则不会运行按钮事件里面的代码

追问

Dim r
r = Workbooks("月结销售盈利表.xlsm").Sheets("银饰及其他已售").UsedRange.Rows.Count + 1
Target.EntireRow.Copy Workbooks("月结销售盈利表.xlsm").Sheets("银饰及其他已售").Rows(r)
上面这个语句怎么写到CommandButton1_Click事件里面去呢?

追答

你需要在模块里写一个公共变量,用来传递target

比如这样:

public myrng as range

然后在worksheet_change里面把target传递给myrng

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 16 Or Target.Count > 1 Then Exit Sub
If Target.Offset(0, 6) <= 1 And Target.Offset(0, -2) <> "" Then
set myrng= target '如果符合条件则把target传递给公共变量
UserForm2.Show
end if
end sub

最后在CommandButton1_Click事件里直接用myrng进行处理

Private Sub CommandButton1_Click() '立即结算
application.enableevents=false '为了操作时不再次触发 worksheet_change事件
Dim r
r = Workbooks("月结销售盈利表.xlsm").Sheets("银饰及其他已售").UsedRange.Rows.Count + 1
myrng.EntireRow.Copy Workbooks("月结销售盈利表.xlsm").Sheets("银饰及其他已售").Rows(r) '这里的target就直接换成你的公共变量名称就行了
application.enableevents=true  '代码运行完毕后再次启用事件触发
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-09-11
1、这个完全不需要userform2.show追问

已经用了窗体了,看之前人家帮我编的窗体,然后第一次自己编窗体,全部搞定了,这里也是想学窗体

相似回答