首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使VBA中的单元格“空白”而不是“空”

如何使VBA中的单元格“空白”而不是“空”
EN

Stack Overflow用户
提问于 2019-03-28 16:33:10
回答 2查看 12K关注 0票数 1

我使用Labview生成一个Excel报表,该报表实际上将一个数组粘贴到电子表格中。例如,电子表格中存在空白:

代码语言:javascript
运行
复制
1
2
3

1
2
3

但是,因为我要在电子表格中插入一个数组,所以空白是空的,但它们不是空的。

当我使用"IsEmpty“运行vba代码检查每个单元时,它返回true。但是,如果我使用"ISBLANK“运行excel公式,它将返回false。我试过以下几种方法,但这并不能使单元格变为空白。

代码语言:javascript
运行
复制
If IsEmpty(Cells(r,c)) Then
    Cells(r,c).Value = ""
    Cells(r,c).ClearContents
    Cells(r,c) = ""

我想使单元格变为空白,而不必删除它们。这是因为我试图在我的VBA代码中使用.End,但它并不是止于空白。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-28 16:38:30

您不需要检查IsEmpty(),而是:

代码语言:javascript
运行
复制
If Cells(r, c).Value = "" Then Cells.ClearContents

这将移除诺尔斯。我指的是零长弦。

票数 3
EN

Stack Overflow用户

发布于 2019-03-28 16:44:35

这可能有点过分,但对你来说会有用的:

代码语言:javascript
运行
复制
Sub tgr()

    Dim ws As Worksheet
    Dim rClear As Range
    Dim aData As Variant
    Dim lRowStart As Long
    Dim lColStart As Long
    Dim i As Long, j As Long

    Set ws = ActiveWorkbook.ActiveSheet
    With ws.UsedRange
        If .Cells.Count = 1 Then
            ReDim aData(1 To 1, 1 To 1)
            aData = .Value
        Else
            aData = .Value
        End If
        lRowStart = .Row
        lColStart = .Column
    End With

    For i = LBound(aData, 1) To UBound(aData, 1)
        For j = LBound(aData, 2) To UBound(aData, 2)
            If Len(Trim(aData(i, j))) = 0 Then
                If rClear Is Nothing Then
                    Set rClear = ws.Cells(lRowStart + i - 1, lColStart + j - 1)
                Else
                    Set rClear = Union(rClear, ws.Cells(lRowStart + i - 1, lColStart + j - 1))
                End If
            End If
        Next j
    Next i

    If Not rClear Is Nothing Then rClear.ClearContents

End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55402678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档