使用>运算符来比较excel范围内抛出异常的值。未定义范围的运算符

时间:2013-09-12 15:11:58

标签: vb.net

我更新了我的帖子和程序,并解决了所有操作员错误。该过程现在按预期工作一半,而不是将值放在列E中,它将它们放在列J上。如果我从列E更改为列B,那么它将值放在G上。所以问题是,某种程度上正在转移我的值从我需要的列到右边的6列。

这是我的整个代码。

  Dim xlWB As Excel.Workbook = CType(Globals.ThisWorkbook.Application.ActiveWorkbook, Excel.Workbook)
Dim xlWSPosition As Excel.Worksheet = CType(CType(xlWB.Sheets("byPosition"), Excel.Worksheet), Excel.Worksheet)

                   With xlWSPosition

                .Application.ScreenUpdating = False

                '.Columns("E").Insert(Excel.XlDirection.xlDown)
                '.Range("E1").Value = "Exemption"
                '.Cells.EntireColumn.AutoFit()

                Dim colValue As Excel.Range
                Dim lngLr As Long
                lngLr = .Range("E" & .Rows.Count).End(Excel.XlDirection.xlUp).Row



                .Application.ScreenUpdating = True

                For Each colValue In .Range("F2:F" & .Range("F" & xlWSPosition.Rows.Count).End(XlDirection.xlUp).Row)

                    If colValue.Value > 0 Then

                        colValue.Cells.Range("E2:E" & lngLr).Value = "N"

                    Else

                        colValue.Cells.Range("E2:E" & lngLr).Value = "Y"


                    End If

                Next colValue

            End With
       End Sub

正如您在屏幕截图中看到的那样,N值转到列J而不是E,而且,当查找> 0

时,似乎它会向下移动一行

Current Output

应该是这样的:

Expected Results

1 个答案:

答案 0 :(得分:1)

您收到此错误消息是因为打算使用Range执行无效操作(检查它是否大于零)。你应该使用Value属性,而不是整个Range。在这里,您可以更正代码,这将有助于您更好地理解事物:

For Each range In .Range("F2:F" & .Range("F" & xlWSPosition.Rows.Count).End(XlDirection.xlUp).Row)
   If(range IsNot Nothing AndAlso range.Value.Trim().Length > 0) Then
      Dim colValue As Double = DirectCast(range.Value, Double)
      If colValue > 0 Then
         .Cells(xlWSPosition.Rows, "E").Value = "N"
      Else
         .Cells(xlWSPosition.Rows, "E").Value = "Y"
      End If
   End If
Next

请注意,我假设给定单元格中的值是Double类型;请将此位(colValue的类型和DirectCast中的类型)调整为您期望的类型。