【问题标题】:how to select a section of ranges如何选择范围的一部分
【发布时间】:2016-01-23 09:11:58
【问题描述】:

要在 AP 列中分配 xx,我必须检查一些必须在分配 xx 之前填写的字段

我试图将一些列分配给一个变量,我对该变量进行了控制,但它似乎不起作用

我在这一行遇到了错误

Set MaPlage = Columns("A:R" & "W:E").Rows(i)

这是我的代码:

Sub Decision()


Dim cell As Range

Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim u As Integer
Dim t As Integer
        Dim l As Integer
        Dim p As Integer

        Set MaPlage = Columns("A:R" & "W:E").Rows(i)

 For i = 2 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
    If CStr(ActiveSheet.Cells(i, 31).Value) = "Completed - Appointment made / Complété - Nomination faite" And (ActiveSheet.MaPlage.Value) = "<>" Then

        If CStr(ActiveSheet.Cells(i, 14).Value) = "AEP" _
            Or CStr(ActiveSheet.Cells(i, 14).Value) = "CMC_REV" _
            Or CStr(ActiveSheet.Cells(i, 14).Value) = "CMC_APT" _
            Or CStr(ActiveSheet.Cells(i, 14).Value) = "CS_TPD" _
            Or CStr(ActiveSheet.Cells(i, 14).Value) = "DM_ID" Then

                         ActiveSheet.Cells(i, 42).Value = "XX"
        End If


    End If

Next i

【问题讨论】:

  • 在你设置 maplage i=0 的时候。 i 直到 for 循环才被赋予一个值。也可以使用Set MaPlage = Range("A" &amp; i &amp; ":R" &amp; i, "W" &amp; i &amp; ":E" &amp; i)
  • 你遇到了什么错误?
  • @ScottCraner 谢谢你的回答,我试过了,但我还是有同样的错误
  • 你给i一个值了吗。您的行是 i = 0 并且在 0 处没有行。您需要将语句移动到循环中,或者将大于 1 的值分配给 i
  • 我的循环应该从 i=2 开始吧? For i = 2 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

标签: vba excel error-handling


【解决方案1】:

结合所有的 cmets 试试这个:

For i = 2 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
    Set maplage = Range("A" & i & ":H" & i & ",J" & i & ":R" & i & ",W" & i & ":Z" & i & ",AA" & i & ":AO" & i)
    If UCase(Left(ActiveSheet.Cells(i, 31).Value), 3) = "COM" _
         And WorksheetFunction.Countif(MaPlage,"") = 0 Then
        Select Case UCase(Left(ActiveSheet.Cells(i, 14).Value), 3)
            Case "AEP", "CMC", "CS_", "DM_"
                ActiveSheet.Cells(i, 42).Value = "XX"
        End Select
    End If
Next i

【讨论】:

  • 谢谢我也可以为未填充的单元格返回一个消息框?像这样的单元格B必须填写
  • 这是一个新问题。用 if 语句和 cells(i,2) "" 自己尝试一下,然后如果你不能得到它,请提出一个新问题。请标记为正确。 @RiadhSaïd
  • 您需要检查所有单元格的拼写。我的猜测是单元格中的拼写与您在“If”语句中键入的拼写不同。如果字符串不准确,则按您的方式比较字符串;大小写、间距和许多其他内容,它将返回 false。
  • @RiadhSaïd 我进行了编辑。我发现在尝试使用字符串时,我得到了字符串的最小部分(在上面我使用前 3 个字符),它足够独特,可以进行测试。我还删除了 ucase 的大小写问题。您可以根据需要进行调整。
  • 问题是他把所有的单元格都检查了一遍,如果只有一个单元格没有填满,我需要xx不会显示
猜你喜欢
  • 2014-02-12
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 2014-09-01
  • 1970-01-01
相关资源
最近更新 更多