VBA连接选定的满足条件的单元格

XababaX

我试图在VBA中编写一个函数,该函数允许我连接单元格并在元素之间添加“,”。此功能的另一方面是,我只想连接与所选范围中的第一个填充颜色和字体颜色相同的单元格。(我的电子表格在具有不同颜色和字体颜色的单元格中具有标签列表)。如果在网上找到了可以满足条件的代码,那么您会感到惊奇。但是,当我尝试添加它们时,它返回值错误。这是我的功能:

Function Concat(rng As Range) As String 
     Dim rngCell As Range
     Dim strResult As String
     Dim bcolor As Long
     Dim fcolor As Long
     bcolor = rng.Cells(1, 1).Interior.ColorIndex
     fcolor = rng.Cells(1, 1).Font.ColorIndex
     For Each rngCell In rng
         If rngCell.Value <> "" And rngCell.Interior.ColorIndex = bcolor And rngCell.Font.ColorIndex = fcolor Then
            strResult = strResult & "," & rngCell.Value
         End If
     Next rngCell
     If rngCell.Value <> "" And rngCell.Interior.ColorIndex = rng.Cells(1, 1).Interior.ColorIndex And rngCell.Font.ColorIndex = rng.Cells(1, 1).Font.ColorIndex Then
         strResult = Mid(strResult, Len(",") + 1)
     End If
     Concat = strResult
End Function

我刚接触VBA(今天下午开始),所以我添加bcolor和fcolor的原因是为了调试。实际上,我认为VBA中有些我不了解的基本知识,因为即使以下函数也不会返回任何值:

Function Concat(rng As Range) As Long 'Replace "Long" by "String" after debug is over
     Dim rngCell As Range
     Dim strResult As String
     Dim bcolor As Long
     Dim fcolor As Long
     bcolor = rng.Cells(1, 1).Interior.ColorIndex
     fcolor = rng.Cells(1, 1).Font.ColorIndex
     For Each rngCell In rng
         If rngCell.Value <> "" And rngCell.Interior.ColorIndex = bcolor And rngCell.Font.ColorIndex = fcolor Then
            strResult = strResult & "," & rngCell.Value
         End If
     Next rngCell
     If rngCell.Value <> "" And rngCell.Interior.ColorIndex = rng.Cells(1, 1).Interior.ColorIndex And rngCell.Font.ColorIndex = rng.Cells(1, 1).Font.ColorIndex Then
         strResult = Mid(strResult, Len(",") + 1)
     End If
     Concat = bcolor
End Function

确实让我感到烦恼的是,此函数在执行以下操作时不会返回单元格的颜色:

Function color1(rng As Range) As Long
    color1 = rng.Cells(1, 1).Font.ColorIndex
End Function

我知道这里有些VBA编码我不了解的基本知识。但是我不知道该怎么办。如果您发现问题出在哪里,我将更正并解释我的错误是什么。谢谢!泽维尔

伯纳德·索西尔

不确定代码的最后部分是否执行了您想要的操作。另外,您不能在rngCell外部使用For Each rngCell In rng

语句的内部仅删除字符串的第一个字符。Mid()从提供参数的位置的字符处开始截断字符串,如果要提供第二个数字,它将设置子字符串将包含的字符数;Len()将返回提供的字符串的长度)。

因此,这strResult = Mid(strResult, Len(",") + 1)几乎意味着存储原始字符串的一个字符串,但从字符2(1 + 1)开始。

尝试这个!

Function Concat(rng As Range) As String
     Dim rngCell As Range
     Dim strResult As String
     Dim bcolor As Long
     Dim fcolor As Long
     bcolor = rng.Cells(1, 1).Interior.ColorIndex
     fcolor = rng.Cells(1, 1).Font.ColorIndex
     For Each rngCell In rng

         If rngCell.Value <> "" And rngCell.Interior.ColorIndex = bcolor And rngCell.Font.ColorIndex = fcolor Then
            If strResult = "" Then
                strResult = rngCell.Value
            Else
                strResult = strResult & ", " & rngCell.Value
            End If
         End If

     Next rngCell
     'this probably doesn't do what you want, so I commented it out.
     'If rngCell.Value <> "" And rngCell.Interior.ColorIndex = rng.Cells(1, 1).Interior.ColorIndex And rngCell.Font.ColorIndex = rng.Cells(1, 1).Font.ColorIndex Then
     '    strResult = Mid(strResult, Len(",") + 1)
     'End If
     Concat = strResult
End Function

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA在满足条件时复制单元格

来自分类Dev

满足条件时选择单元格

来自分类Dev

Excel VBA:选定的单元格循环

来自分类Dev

Excel VBA-如果单元格值满足条件,则在工作表之间复制单元格

来自分类Dev

如果满足条件,则连接两个单元格值

来自分类Dev

基于单元格值的单元格条件连接

来自分类Dev

如果使用 Excel VBA 不满足条件,则编辑特定列中单元格的值

来自分类Dev

VBA条件单元格选择

来自分类Dev

VBA条件格式+删除单元格

来自分类Dev

列表满足条件时替换单元格中的数据

来自分类Dev

如果满足条件,则为单元格添加值

来自分类Dev

满足大于和小于条件的单元格的总和

来自分类Dev

Excel,如果满足条件,则对包含字母数字单元格的单元格进行计数

来自分类Dev

当上面的单元格满足条件时,在单元格中插入文本

来自分类Dev

Excel VBA宏-在选定的单元格上运行

来自分类Dev

对VBA中的选定单元格执行修剪功能

来自分类Dev

VBA图表标题包括选定/活动单元格

来自分类Dev

选定范围VBA中多个单元格的增/减值

来自分类Dev

每个选定单元格的Excel VBA循环宏

来自分类Dev

EXCEL VBA 循环遍历单元格并有条件地连接

来自分类Dev

对于范围中的每个单元格,如果满足条件,则将单元格值添加到数组

来自分类Dev

如果单元格满足特定条件然后恢复正常,如何多次重复单元格?

来自分类Dev

如果与相邻单元格的总和结果满足条件,则对谷歌表格中单元格的总和值进行求和

来自分类Dev

连接所有符合条件的单元格(Excel)

来自分类Dev

连接Excel VBA中的单个单元格

来自分类Dev

VBA Excel:连接一系列单元格

来自分类Dev

连接单元格但之前检查值 - Excel VBA

来自分类Dev

Excel VBA 用循环连接单元格

来自分类Dev

VBA宏,当前选定的单元格和行中的下一个单元格

Related 相关文章

  1. 1

    VBA在满足条件时复制单元格

  2. 2

    满足条件时选择单元格

  3. 3

    Excel VBA:选定的单元格循环

  4. 4

    Excel VBA-如果单元格值满足条件,则在工作表之间复制单元格

  5. 5

    如果满足条件,则连接两个单元格值

  6. 6

    基于单元格值的单元格条件连接

  7. 7

    如果使用 Excel VBA 不满足条件,则编辑特定列中单元格的值

  8. 8

    VBA条件单元格选择

  9. 9

    VBA条件格式+删除单元格

  10. 10

    列表满足条件时替换单元格中的数据

  11. 11

    如果满足条件,则为单元格添加值

  12. 12

    满足大于和小于条件的单元格的总和

  13. 13

    Excel,如果满足条件,则对包含字母数字单元格的单元格进行计数

  14. 14

    当上面的单元格满足条件时,在单元格中插入文本

  15. 15

    Excel VBA宏-在选定的单元格上运行

  16. 16

    对VBA中的选定单元格执行修剪功能

  17. 17

    VBA图表标题包括选定/活动单元格

  18. 18

    选定范围VBA中多个单元格的增/减值

  19. 19

    每个选定单元格的Excel VBA循环宏

  20. 20

    EXCEL VBA 循环遍历单元格并有条件地连接

  21. 21

    对于范围中的每个单元格,如果满足条件,则将单元格值添加到数组

  22. 22

    如果单元格满足特定条件然后恢复正常,如何多次重复单元格?

  23. 23

    如果与相邻单元格的总和结果满足条件,则对谷歌表格中单元格的总和值进行求和

  24. 24

    连接所有符合条件的单元格(Excel)

  25. 25

    连接Excel VBA中的单个单元格

  26. 26

    VBA Excel:连接一系列单元格

  27. 27

    连接单元格但之前检查值 - Excel VBA

  28. 28

    Excel VBA 用循环连接单元格

  29. 29

    VBA宏,当前选定的单元格和行中的下一个单元格

热门标签

归档