VBA 不执行,提示"要求对象"
请问各位老师,执行下面代码,提示:要求代码,请帮助修改,谢谢Sub计算普通件零售价()IfTarget.Count<>1ThenExitSub'如果TARGET单元格区域...
请问各位老师,执行下面代码,提示:要求代码,请帮助修改,谢谢
Sub 计算普通件零售价()
If Target.Count <> 1 Then Exit Sub '如果TARGET单元格区域中、单元格数量大于1,就退出程序。也就是说,只选择一个单元格时,才执行下面的代码。
Application.EnableEvents = False
If Target.Row > 2 And Target.Column = 6 Then '如果活动单元格的行号大于2(从第3行往后的单元格)、而且单元格的列号等于6(就是说必须是F列),才执行下面代码。
ActiveCell.FormulaR1C1 = "=ROUNDUP(RC[1]*1.54,0)" '在当前单元格按公式计算零售价
Selection.Copy '复制该单元格
Selection.PasteSpecial Paste:=xlPasteValues '"选择性粘贴""数值"至该单元格
Selection.Interior.Color = 65535 '填充黄色
End If
End Sub
谢谢您,二楼天老师,我不希望使用Private Sub Worksheet_SelectionChange(ByVal Target As Range)它,怎么办,请指教
谢谢您,三楼老师,我的代码下半部分,是我自己录制的,并且经过编辑,而上半部分,是在网上复制过来的,不是很理解,我对宏也不明白,因此,您下面的说明,不理解,请明示,谢谢您
说明:不用赋值单元格的值,用下面的语句,简单
Selection.Value = Selection.Value 展开
Sub 计算普通件零售价()
If Target.Count <> 1 Then Exit Sub '如果TARGET单元格区域中、单元格数量大于1,就退出程序。也就是说,只选择一个单元格时,才执行下面的代码。
Application.EnableEvents = False
If Target.Row > 2 And Target.Column = 6 Then '如果活动单元格的行号大于2(从第3行往后的单元格)、而且单元格的列号等于6(就是说必须是F列),才执行下面代码。
ActiveCell.FormulaR1C1 = "=ROUNDUP(RC[1]*1.54,0)" '在当前单元格按公式计算零售价
Selection.Copy '复制该单元格
Selection.PasteSpecial Paste:=xlPasteValues '"选择性粘贴""数值"至该单元格
Selection.Interior.Color = 65535 '填充黄色
End If
End Sub
谢谢您,二楼天老师,我不希望使用Private Sub Worksheet_SelectionChange(ByVal Target As Range)它,怎么办,请指教
谢谢您,三楼老师,我的代码下半部分,是我自己录制的,并且经过编辑,而上半部分,是在网上复制过来的,不是很理解,我对宏也不明白,因此,您下面的说明,不理解,请明示,谢谢您
说明:不用赋值单元格的值,用下面的语句,简单
Selection.Value = Selection.Value 展开
3个回答
展开全部
Option Explicit
Sub 计算普通件零售价()
'使用with语句,针对选中的单元格备手操作
With Selection
'直接写全退出的条件
If .Count <> 1 Or .Row <= 2 Or .Column <> 6 Then MsgBox "a": Exit Sub
'设置所有的事件不触发
Application.EnableEvents = False
'写入公式
.FormulaR1C1 = "=ROUNDUP(RC[1]*1.54,0)"
'将单元格的结果赋值给该单元格
.Value = .Value
'设置单元格底色
.Interior.Color = vbYellow
'设置所有的事件触发
Application.EnableEvents = True
End With
End Sub
'----------------------
'说明:不用赋值单元格的值,用下宏滚简面的语句,简单
'Selection.Value = Selection.Value
'也就是上面蔽裤的这句:
'.Value = .Value
'前面一句给这个单元格写入了公式,用这句将结果赋值给该单元格
Sub 计算普通件零售价()
'使用with语句,针对选中的单元格备手操作
With Selection
'直接写全退出的条件
If .Count <> 1 Or .Row <= 2 Or .Column <> 6 Then MsgBox "a": Exit Sub
'设置所有的事件不触发
Application.EnableEvents = False
'写入公式
.FormulaR1C1 = "=ROUNDUP(RC[1]*1.54,0)"
'将单元格的结果赋值给该单元格
.Value = .Value
'设置单元格底色
.Interior.Color = vbYellow
'设置所有的事件触发
Application.EnableEvents = True
End With
End Sub
'----------------------
'说明:不用赋值单元格的值,用下宏滚简面的语句,简单
'Selection.Value = Selection.Value
'也就是上面蔽裤的这句:
'.Value = .Value
'前面一句给这个单元格写入了公式,用这句将结果赋值给该单元格
展开全部
因为你的语句中Target没定义所以出错,可将你的语句放在下面事件中
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
...
End Sub
注意:败弯这个事件是在相应sheet对应的代码中,察升闷比如sheet1,不要放在module中
不用这个事件的话,可以这样改
Sub 计算普通件笑哪零售价()
Dim row1 As Integer, count1 As Integer
row1 = Range(Selection.Address).Row
count1 = Range(Selection.Address).Columns.Count
If count1 <> 1 Then Exit Sub
Application.EnableEvents = False
If row1 > 2 And count1 = 6 Then
ActiveCell.FormulaR1C1 = "=ROUNDUP(RC[1]*1.54,0)"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Selection.Interior.Color = 65535
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
...
End Sub
注意:败弯这个事件是在相应sheet对应的代码中,察升闷比如sheet1,不要放在module中
不用这个事件的话,可以这样改
Sub 计算普通件笑哪零售价()
Dim row1 As Integer, count1 As Integer
row1 = Range(Selection.Address).Row
count1 = Range(Selection.Address).Columns.Count
If count1 <> 1 Then Exit Sub
Application.EnableEvents = False
If row1 > 2 And count1 = 6 Then
ActiveCell.FormulaR1C1 = "=ROUNDUP(RC[1]*1.54,0)"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Selection.Interior.Color = 65535
End If
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接赋圆粗值就行橘返镇了 selection=Application.WorksheetFunction.RoundUp(RC[1]* 1.54, 0)
不世游必先插入函数、复制、选择性粘贴了。
不世游必先插入函数、复制、选择性粘贴了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询