Excel VBA在输入时运行
我从来没有用VBA写过任何东西。我有一个秤,可以称量项目并将其输入excel。然而,当我称某物时,它会读取一个读数,当秤在两次称重之间为空时,它也会记录一个读数。我正在努力消除D列中的空白读数。它确实需要在电子表格的每个条目上发生 如果我手动运行此代码,它将正常工作。如何包装它以使其自动执行?此外,请仔细解释如何激活代码。无论出于什么原因,我的网络搜索结果都不清楚Excel VBA在输入时运行,vba,excel,Vba,Excel,我从来没有用VBA写过任何东西。我有一个秤,可以称量项目并将其输入excel。然而,当我称某物时,它会读取一个读数,当秤在两次称重之间为空时,它也会记录一个读数。我正在努力消除D列中的空白读数。它确实需要在电子表格的每个条目上发生 如果我手动运行此代码,它将正常工作。如何包装它以使其自动执行?此外,请仔细解释如何激活代码。无论出于什么原因,我的网络搜索结果都不清楚 Sub clean_input_data() Dim i As Long With Application .Screen
Sub clean_input_data()
Dim i As Long
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
i = .Range("D" & Rows.Count).End(xlUp).row
If i < 2 Then
MsgBox "No data found, macro exiting"
Exit Sub
Else
With .Range("D1:D" & i)
.AutoFilter
.AutoFilter field:=1, Criteria1:="<=0.005", Operator:=xlAnd
End With
End If
.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).Rows.Delete
.AutoFilterMode = False
End With
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
Sub-clean_输入_数据()
我想我会坚持多久
应用
.ScreenUpdate=False
.DisplayAlerts=False
以
使用ActiveSheet
如果.AutoFilterMode,则.AutoFilterMode=False
i=.Range(“D”和Rows.Count).End(xlUp).row
如果我小于2,那么
MsgBox“未找到数据,宏正在退出”
出口接头
其他的
带.Range(“D1:D”和i)
.自动过滤器
.AutoFilter字段:=1,Criteria1:=“尝试将以下子例程放置在包含测量值的工作表选项卡中:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target.Parent.Range("D:D"), Target) Is Nothing Then
Application.EnableEvents = False
Run "clean_input_data"
Application.EnableEvents = True
End If
End Sub
我刚刚看到David的回答,我想他有一个更好的主意。“我有一个秤,可以称量项目并将其输入excel“-这在实践中到底是什么样的?是什么触发了一个新条目,每个新条目放在哪里?可能是通过使用工作表\u Change
事件,并添加一些逻辑来忽略条目==0(或工作表中注册的任何“空”刻度)Tim。我正在运行rs232键软件。这是一个“键盘楔”软件。它从串行端口读取输入数据并将其放入键盘缓冲区。电子秤在感测到新重量并稳定后发送数据(因此它记录加载和卸载)。该值从键盘缓冲区输入excel,之后输入。因此,在Excel中,数据由rs232软件输入,然后为我点击回车键。我想删除“已卸载”行。如果您是在谈论我的答案,用户只需使用他已经找到的子例程即可。至于David的评论,您可能会有这样的内容:TempRange=Intersect(Target.Parent.Range(“D:D”),Target)
然后对于TempRange中的每个单元格,如果ABS(Cell.Value)这似乎创建了某种无休止的循环,调试指向“.AutoFilter字段:=1,准则1:=“是的,您是对的。很抱歉,我忘记添加一些东西来禁用事件。请看修改后的答案。啊。我看到了@Demetri。抱歉,我正在考虑“清除”工作表\u Change事件中的错误条目+1用于轻松集成:)