Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA Excel跳过不带循环的范围函数中的空单元格_Excel_Vba - Fatal编程技术网

使用VBA Excel跳过不带循环的范围函数中的空单元格

使用VBA Excel跳过不带循环的范围函数中的空单元格,excel,vba,Excel,Vba,我已经创建了一个组合框,我想添加一个在不同工作表中定义的元素,所以我使用了 cmbType.List = Sheets("TBL_USER_META").Range("B3:B6").Value 现在我的问题是: 这个范围将来可能会增加,所以我们可以选择整个B列吗 当前,范围也包含空白单元格,这是可见的 组合框。我们能跳过这些吗 我找到了各种跳过空白单元格的解决方案,但所有其他解决方案都使用循环来迭代每个单元格并检查它是否为空白。 请提供帮助。如果您的源区域不会超过65536个单元格,并且其内

我已经创建了一个组合框,我想添加一个在不同工作表中定义的元素,所以我使用了

cmbType.List = Sheets("TBL_USER_META").Range("B3:B6").Value
现在我的问题是:

  • 这个范围将来可能会增加,所以我们可以选择整个B列吗
  • 当前,范围也包含空白单元格,这是可见的 组合框。我们能跳过这些吗 我找到了各种跳过空白单元格的解决方案,但所有其他解决方案都使用循环来迭代每个单元格并检查它是否为空白。
    请提供帮助。

    如果您的源区域不会超过65536个单元格,并且其内容没有任何空白字符,您可以使用:

    With Sheets("TBL_USER_META")
        cmbType.List = Split(WorksheetFunction.Trim(Join(Application.Transpose(.Range("B3", .Cells(.Rows.Count, 2).End(xlUp)).Value), " ")), " ")
    End With
    

    如果它们有任何空白字符,您需要更多的twicking

    谢谢@DisplayName:-)如果您有时间,您能告诉我它是如何工作的吗?不客气。至于它是如何工作的:1)
    .Range(“B3”,.Cells(.Rows.Count,2).End(xlUp))
    引用第2列中从第3行到最后一个非空单元格的范围2)1D“columned”范围的
    返回一个2D nx1大小的
    变量
    数组3)
    应用程序.Transpose()
    tras使用所需的delimeter(
    “”
    )5
    工作表函数将2D nx1大小的数组放入1D n大小的数组4)
    Join()
    将1D数组中的所有项加入到一个
    字符串中
    在给定delimeter(
    “”
    )的情况下,从字符串中返回1D n大小的数组