【问题标题】:Excel VBA code to clear data from one cell based on another cell valueExcel VBA代码,用于根据另一个单元格值从一个单元格中清除数据
【发布时间】:2017-07-21 05:43:43
【问题描述】:

我是自学成才,遇到了一些我认为很容易的问题。我有一个电子表格,我需要遍历 O 列并找到任何包含数据的单元格,并清除 H 列中相应单元格的内容。分布表一直在变化,因此最后一行数据总是在变化。下面是我一直在玩但似乎无法工作的代码。任何帮助都会很棒..

    Dim deleterate As Long
    Dim ws As Worksheet

' set object
Set ws = Sheets("Import file")


' loop through the data to find the $$ amounts in column o

For deleterate = ws.Range("O" & Row.count).End(xlUp).Row To 1 Step -1

' indentify values in O which have value

If ws.Range("O" & deleterate).Value <> 0 Then
Cells(0, 7).ClearContents
End If

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你不能有一行0,所以你的行

    Cells(0, 7).ClearContents
    

    会报错。除非您知道要使用ActiveSheet,否则您还应该始终限定您所指的工作表。


    所以你应该使用

    ws.Cells(deleterate, 8).ClearContents
    

    指定正确的行和列(因为“H”是第8列,而不是第7列)甚至

    ws.Cells(deleterate, "H").ClearContents
    

    或者,为了与您的上一行(If 语句)保持一致,您可以使用

    ws.Range("H" & deleterate).ClearContents
    

    【讨论】:

    • 谢谢。这并在 For 语句中添加一个起始位置修复了它。
    • @DennisHolt Ahh - 我忽略了那个错字。而且,FWIW,它应该是ws.Rows.Count,而不仅仅是Rows.Count。它通常可以在没有 ws. 的情况下工作,但如果您打开了多个不同 Excel 版本的工作簿(例如 xlsxlsx),则可能会导致问题。
    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多