excel VBA编写的字符串中的第一行是换行符

jtoj6r0c  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(166)

我有一个脚本,它从单元格值(适用的授权)生成要写入单元格(授权机会列表)的字符串值。
问题是它在开头添加了一个换行符:

我需要从第一行中删除此分隔行。
在下面的代码中,"x"逻辑和对不同工作表的更改是检查授权是否适用,如果适用,则将其添加到grantc变量。
代码:

If Cells(fila, col) = "x" Or Cells(fila, col) = "X" Then
    Sheets("Grants").Select
    'col2 = col - 7
    col2 = col - 10

    If Cells(2, col2) <> "" Then
        If grantc = "" Then
            firstgrant = Cells(2, col2).Value
        Else
            firstgrant = grantc & vbNewLine & Cells(2, col2).Value
        End If
        lrow2 = Cells(Rows.Count, col2).End(xlUp).Row
        If lrow2 = 2 Then
            grantc = firstgrant
            grantc = LTrim(grantc)
            Sheets("Projects").Select
            If Cells(fila, lcol) = "" Then
                Cells(fila, lcol).Value = grantc
            Else
            End If
        Else
            grantr = Cells(2, col2).Value
            If InStr(LCase(grantc), LCase(grantr)) = 0 Then
                grantc = grantc & vbNewLine & grantr
                grantc = LTrim(grantc)
            End If
            fila2 = 3
            Do Until fila2 > lrow2
                grantr = Cells(fila2, col2).Value
                If InStr(LCase(grantc), LCase(grantr)) = 0 Then
                    grantc = grantc & vbNewLine & grantr
                    grantc = LTrim(grantc)
                End If
                fila2 = fila2 + 1
            Loop
        End If
    End If
End If
yzuktlbb

yzuktlbb1#

您总是可以在末尾添加一个复选标记来删除前导换行符(CRLF),如下所示:

If Left(grantc, 2) = vbNewLine Then
    grantc = Right(grantc, Len(grantc) - 2)
End If

换行符为2个字符的原因是,在Windows下,换行符由回车(CR)字符(ASCII代码13)和换行符(LF)字符(ASCII代码10)组成。这在不同的操作系统(即Mac)中会有所不同。
因此,如果您需要在Windows和Mac下运行,请用途:

If Left(grantc, Len(vbNewLine)) = vbNewLine Then
    grantc = Right(grantc, Len(grantc) - Len(vbNewLine))
End If

相关问题