簡體   English   中英

VBA SpecialCells 宏錯誤

[英]VBA SpecialCells Macro bug

我目前正在使用以下代碼自動居中對齊表格行中的數字、公式和文本,除了選擇中的第一列,如果它是文本,則向左對齊,如果不是,則居中對齊。

然而,令人討厭的是,如果我只選擇一行,宏就會開始為所選內容上方和下方的每個單元格運行。 有沒有辦法來解決這個問題?

此外,目前一旦宏完成運行,它就會在選擇的第一列結束。 有沒有辦法讓它以我開始的選擇結束(即,如果我選擇了單元格 A1:D1,一旦運行完畢,當前選定的單元格將是 A1,但我希望它仍然突出顯示 A1:D1 )。

如果有任何不清楚的地方,請見諒

Sub Test_align_left()
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
    End With

    Selection.Columns(1).Select

    On Error Resume Next

    With Selection
        .SpecialCells(xlCellTypeConstants, xlTextValues).HorizontalAlignment = xlLeft
        .SpecialCells(xlCellTypeFormulas, xlTextValues).HorizontalAlignment = xlLeft
    End With
End Sub

這是我開始的示例表:

Pic1 - 這是我開始的示例表

我選擇前兩行:

Pic2 - 我選擇前兩行

它工作得很好,第一行在第一列中包含一個數字,因此它居中對齊,第二行在第一列中有文本,因此它向左對齊 - 到目前為止一切順利:

Pic3 - 它工作得很好,第一行在第一列中包含一個數字,因此它居中對齊,第二行在第一列中有文本,因此它向左對齊 - 到目前為止一切順利

但是,如果我在這一行運行宏:

Pic4 - 但是,如果我在這一行運行宏:

突然所有帶有文本的單元格都向左對齊,無論我是否選擇了它們:

Pic5 - 突然所有帶有文本的單元格都向左對齊,無論我是否選擇它們

像這樣處理一行的特殊情況:

Sub Test_align_left()
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter

        With .Columns(1)
            If .Cells.Count > 1 Then

                On Error Resume Next
                .SpecialCells(xlCellTypeConstants, xlTextValues).HorizontalAlignment = xlLeft
                .SpecialCells(xlCellTypeFormulas, xlTextValues).HorizontalAlignment = xlLeft
            Else
                If Not IsNumeric(.Value) Then .HorizontalAlignment = xlLeft
            End If

        End With
    End With
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM