Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA,基于单元格值选择行_Vba_Excel - Fatal编程技术网

VBA,基于单元格值选择行

VBA,基于单元格值选择行,vba,excel,Vba,Excel,我的数据是动态的,我必须存储的唯一值大于零并且位于H列。因此,我必须在保存记录之前删除H列中包含0的行 我当前的选择只是硬编码在数据集下面 编辑:在清除内容之前,如何根据整行的H列值将选择过程从硬编码更改为公式 *特别是那部分 `Range("A4:J8").Select Selection.ClearContents` 这是我的代码供参考。 谢谢大家! Sub openCSV() Range("A4:J8").Select Selection.ClearCont

我的数据是动态的,我必须存储的唯一值大于零并且位于H列。因此,我必须在保存记录之前删除H列中包含0的行

我当前的选择只是硬编码在数据集下面

编辑:在清除内容之前,如何根据整行的H列值将选择过程从硬编码更改为公式 *特别是那部分

`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