在 Excel VBA 中处理范围内的列

詹姆斯·柯兰

我有一个比较两列并返回 true 或 false 的函数。我有另一个将范围作为输入的函数,并且应该对该范围内的列进行所有成对比较。

但是,我似乎在从范围中提取(和存储)列时画了一个空白。当我要求第 i 列时,该函数退出。这是我的代码:

Function CompareAllColumns(r As Range, o As Range)
Dim numCols As Integer
Dim i As Integer
Dim j As Integer
Dim col1 As Range
Dim col2 As Range
Dim Matches As Integer

Matches = 0
numCols = r.Columns.Count
Dim ac1 As String
Dim ac2 As String
Dim a As String

a = r.Address

For i = 1 To numCols - 1
    col1 = r.Columns(i).Select
    ac1 = col1.Address

    For j = i + 1 To numCols
        col2 = r.Columns(j).Select

        If (Compare(col1, col2)) Then
            o.Value = "Columns " & i & " and " & j & " are the same"
            o = o.Offset(1).Select
            Matches = Matches + 1
        End If
    Next
Next

CompareAllColumns = Matches
End Function

它在线上退出col1 = r.Columns(1).Select-Select实验性地存在,但对正确执行没有影响。

YoE3K

你必须Set对象,你不能对Let它们使用默认值

此外,由于这似乎是一个 UDF(基于您的评论“它在线上退出col1 = r.Columns(1).Select”,而不是您说它在那条线上崩溃了),您需要注意您的代码将不被允许Excel 单元格的更改,而不是通过从函数返回值。

Function CompareAllColumns(r As Range, o As Range)
    Dim numCols As Integer
    Dim i As Integer
    Dim j As Integer
    Dim col1 As Range
    Dim col2 As Range
    Dim Matches As Integer

    Matches = 0
    numCols = r.Columns.Count
    Dim ac1 As String
    Dim ac2 As String
    Dim a As String

    a = r.Address

    For i = 1 To numCols - 1
        'use Set for an object
        Set col1 = r.Columns(i)
        ac1 = col1.Address

        For j = i + 1 To numCols
            'use Set for an object
            Set col2 = r.Columns(j)

            If Compare(col1, col2) Then
                'You can't set values within a UDF
                'o.Value = "Columns " & i & " and " & j & " are the same"
                'You can't "Select" things within a UDF
                'o = o.Offset(1).Select
                Matches = Matches + 1
            End If
        Next
    Next

    CompareAllColumns = Matches
End Function

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA 更改范围内另一列和行中的值

来自分类Dev

如何只复制范围内的Excel VBA中的值?

来自分类Dev

如何只复制范围内的Excel VBA中的值?

来自分类Dev

如何在Excel VBA中的范围内循环列

来自分类Dev

Excel VBA检查范围内的值列表,并在另一列中返回设置值

来自分类Dev

Excel:按列索引选择范围内的列-无VBA

来自分类Dev

Excel 2003 VBA-如果日期在范围内,则锁定列

来自分类Dev

Excel VBA-遍历范围内的特定工作表

来自分类Dev

VBA Excel:如何仅选择范围内的数字值?

来自分类Dev

Excel / VBA:使用公式查找范围内的常数

来自分类Dev

Excel VBA删除范围内的空白行

来自分类Dev

使用vba在excel范围内查找特定行

来自分类Dev

Excel VBA删除多个工作表中的范围内的空白行

来自分类Dev

在Excel VBA中,如何在范围内添加自动值

来自分类Dev

VBA Excel的处理范围与每个

来自分类Dev

excel VBA功能选择一列中的第一行,它将选择其下的所有单元格并使其处于范围内

来自分类Dev

使用Excel VBA复制列中的范围

来自分类Dev

删除Excel VBA中的列范围

来自分类Dev

检查单元格是否在范围内,如果是,则在 Excel VBA 中返回单词“Marginal”

来自分类Dev

Excel VBA-遍历Powerpoint形状并标识不在Excel范围内的文本行

来自分类Dev

VBA中的减法范围(Excel)

来自分类Dev

范围,Excel VBA中的空行

来自分类Dev

Excel VBA中的范围方法

来自分类Dev

Excel VBA 中的动态范围

来自分类Dev

Excel VBA排序范围

来自分类Dev

VBA EXCEL范围语法

来自分类Dev

VBA EXCEL范围语法

来自分类Dev

Excel VBA范围选择

来自分类Dev

在Excel VBA中对范围内的每个单元格调用函数(涉及插入行,因此范围将发生变化)

Related 相关文章

热门标签

归档