VBA,基于单元格值选择行
我的数据是动态的,我必须存储的唯一值大于零并且位于H列。因此,我必须在保存记录之前删除H列中包含0的行 我当前的选择只是硬编码在数据集下面 编辑:在清除内容之前,如何根据整行的H列值将选择过程从硬编码更改为公式 *特别是那部分VBA,基于单元格值选择行,vba,excel,Vba,Excel,我的数据是动态的,我必须存储的唯一值大于零并且位于H列。因此,我必须在保存记录之前删除H列中包含0的行 我当前的选择只是硬编码在数据集下面 编辑:在清除内容之前,如何根据整行的H列值将选择过程从硬编码更改为公式 *特别是那部分 `Range("A4:J8").Select Selection.ClearContents` 这是我的代码供参考。 谢谢大家! Sub openCSV() Range("A4:J8").Select Selection.ClearCont
`Range("A4:J8").Select
Selection.ClearContents`
这是我的代码供参考。
谢谢大家!
Sub openCSV()
Range("A4:J8").Select
Selection.ClearContents
Selection.ClearContents
ActiveWorkbook.Save
ActiveWorkbook.Save
SendKeys String:="%slc{enter}", Wait:=True
Application.Wait (Now + TimeValue("00:00:03"))
ActiveWindow.Close
End Sub
我不确定我是否100%理解这些问题。如果您所要求的只是如何根据columns值清除行的内容,那么此代码应该适用于您:
Sub openCSV()
Dim lRow As Long
lRow = Cells(Rows.Count, 1).END(xlUp).Row 'finds last row
'Loop from the last row to the first (assuming row 1 is header data so stopping at row 2)
For i = lRow To 2 Step -1
'Perform whatever test you want on column H
If ActiveSheet.Range("H" & i).Value = 0 Then
ActiveSheet.Rows(i).ClearContents
End If
Next i
Range("A4:J8").Select
ActiveWorkbook.Save
ActiveWorkbook.Save
SendKeys String:="%slc{enter}", Wait:=True
Application.Wait (Now + TimeValue("00:00:03"))
ActiveWindow.Close
End Sub
我使用的是反向循环,因为我不确定你在问什么。如果您最终想要删除该行,那么这段代码在从头到尾的过程中仍然有效。如果只清除内容,则可以向任意方向移动,但仍能正常工作。这一点都不清楚。你的代码与你的问题有什么关系?你到底在问什么?首先,如果你想得到答案,你必须问一个问题,因为你还没有问。你的帖子中关于a)你到底想要实现什么,b)你的困难在哪里,c)如果有任何错误,在哪里请阅读并改进您的问题。屏幕截图或示例数据可能有助于解释您的目标。lol,我想知道
SendKeys
在做什么,所以我仔细检查了代码-它在VBE中输入了lc,然后由于“编译错误-未找到子或函数”而崩溃。我应该仔细考虑一下对不起,我已经修改了这个问题。我试图在清除.contents之前选择一行。我试图替换“范围”(“A4:J8”)。选择“这是我的主代码的一部分”。在关闭之前,按send键保存工作簿。此代码不会关闭应用程序窗口,最后6行代码编码不好。使用SendKeys
不是保存工作簿的好方法。关闭并保存工作簿并退出应用程序的最佳方法是将最后6行代码替换为<代码>应用程序。退出和活动工作簿。关闭保存更改:=True
他的代码与问题根本不相关的那些。是的,你也可以把它清理干净,但这并不能从答案中去掉我完全同意@GMalc的SendKeys
在这方面是一个非常糟糕的做法,应该加以纠正,使之成为一个好的答案。即使这不是OPs的实际问题,其他人也会通过使用堆栈溢出的答案来学习,因此纠正这些明显不好的事情是一种很好的做法。最后5行应替换为ActiveWorkbook.Close SaveChanges:=True