Excel VBA 对于每个 + if 语句异常问题

战争

我正在尝试实现一个简单的 for-each 语句,该语句应该将数据从一个工作表(模板)复制到另一个(原始数据),然后是另一个“清理” for-each + If 语句,这应该是清除先前复制的所有单元格,除了 5 个具有预定义计算的单元格。

我从清除所有字段的 for-each 语句开始(并且工作正常),除了后来我认为我需要对某些字段进行例外处理的事实。所以,我添加了一个简单的 If 语句,它指示 sub 转到下一个单元格而不清除它,以防出现那些特定的单元格范围。

出于某种原因,在运行该代码时,它会清除定义范围内的所有字段,但不包含在异常中的字段 K15 除外,我不知道为什么会发生这种情况;__; 我尝试排除故障,但无法提出任何问题。

我的代码粘贴在下面。任何建议将不胜感激 - 包括改进代码的任何提示。谢谢!

Sub CopyData()

Dim TargetRow, CopyRange, Cell As Range
Dim RowCount, ColumnCount, ColumnLast, ColC As Long
Dim ws As Worksheet

Application.ScreenUpdating = False

ColumnCount = 1
ColumnLast = 51
ColC = 1
Set ws = ThisWorkbook.ActiveSheet
Set CopyRange = Range("C10:C15,C17:C18,E12,E17:E18,K4:K6,K9,K11:K45")

Sheets("RawData").Activate
RowCount = Range("A1").CurrentRegion.Rows.Count + 1

Set TargetRow = Range(Cells(RowCount, ColumnCount), Cells(RowCount, ColumnLast))

For Each Cell In CopyRange
    TargetRow.Cells(ColC).Value = Cell.Value
    ColC = ColC + 1
Next Cell

ws.Activate

For Each Cell In CopyRange
    If Cell = Range("K4") Or Cell = Range("K5") Or Cell = Range("K6") Or Cell = Range("K9") _
    Or Cell = Range("K46") Then
        GoTo Forward
    Else
        Cell.Value = ""
    End If
Forward:
Next Cell

Application.ScreenUpdating = True

End Sub
YoE3K

你的台词

If Cell = Range("K4") Or Cell = Range("K5") Or _
   Cell = Range("K6") Or Cell = Range("K9") Or _
   Cell = Range("K46") Then
    GoTo Forward

相当于

If Cell.Value = Range("K4").Value Or Cell.Value = Range("K5").Value Or _
   Cell.Value = Range("K6").Value Or Cell.Value = Range("K9").Value Or _
   Cell.Value = Range("K46").Value Then
    GoTo Forward

我想你是想用

If Cell.Address = Range("K4").Address Or Cell.Address = Range("K5").Address Or _
   Cell.Address = Range("K6").Address Or Cell.Address = Range("K9").Address Or _
   Cell.Address = Range("K46").Address Then
    GoTo Forward

这相当于

If Cell.Address = "$K$4" Or Cell.Address = "$K$5" Or _
   Cell.Address = "$K$6" Or Cell.Address = "$K$9" Or _
   Cell.Address = "$K$46" Then
    GoTo Forward

但您可能还想考虑使用一个Range包含要复制Range的单元格的变量,以及包含要清理的单元格的另一个变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA:对于长距离的每个循环

来自分类Dev

对于每个循环范围VBA Excel宏

来自分类Dev

Excel VBA-对于每个循环替代

来自分类Dev

对于每个在Excel VBA中不起作用

来自分类Dev

Excel VBA:对于每个循环返回值而不是范围

来自分类Dev

excel VBA 对于每个循环范围错误#VALUE

来自分类Dev

Excel vba - 对于选择中的每个单元格

来自分类Dev

Excel VBA宏:“对于每个...在...中”循环中的“需要对象”

来自分类Dev

对于Excel中的每个循环VBA仅需两次迭代即可完成

来自分类Dev

SQL 对于每个语句

来自分类Dev

对于每个循环问题

来自分类Dev

Excel或VBA的异常行为

来自分类Dev

Excel VBA Ifelse语句

来自分类Dev

IF语句Excel VBA

来自分类Dev

VBA Excel的处理范围与每个

来自分类Dev

Excel VBA:粘贴问题

来自分类Dev

Excel VBA .find问题

来自分类Dev

Excel VBA列表问题

来自分类Dev

Excel VBA 问题

来自分类Dev

VBA / Excel If ... Then ... ElseIf ... Else语句复制向下列问题

来自分类Dev

对于模式的每个循环问题

来自分类Dev

对于每个问题Laravel Blade

来自分类Dev

对于VBA循环。宏Excel程序

来自分类Dev

VBA Excel For Loop表现异常

来自分类Dev

Excel VBA。查找范围异常

来自分类Dev

Excel VBA。查找范围异常

来自分类Dev

VBA Excel多个elseif语句

来自分类Dev

For循环和If语句Excel VBA

来自分类Dev

“For”语句中的 Excel Vba 错误