Как вставить целевой формат в VBA, используя PasteSpecial и Size? - PullRequest
0 голосов
/ 27 июня 2019

Я хочу, чтобы cltr + v и выполнил код, который как можно лучше вставил форматирование моего назначения

Хорошо, я вставляю специальные значения, а затем переформатирую значения

Но у меня есть ошибка, которая возникает в строке ActiveCell.PasteSpecial (xlPasteValues), «Метод PasteSpecial класса Range завершился ошибкой 1004 ошибка времени выполнения»

Я хочу сделать этот код аккуратным, но у меня возникли некоторые проблемы.

Кроме того, по какой-то причине (хотя обрезка, выравнивание по правому краю и имя «calibri» работают нормально) .Size вставленных значений не работает (ошибка «объект не поддерживает это свойство»)

Есть мысли? Спасибо!

Sub PasteWithDestinationFormatting()

     ActiveCell.PasteSpecial (xlPasteValues)

End Sub


Sub TrimAndFit()

    Dim r As Range


    Call PasteWithDestinationFormatting



    With Application.WorksheetFunction

        For Each r In Intersect(Selection, ActiveSheet.UsedRange)

            r.Value = .Trim(r.Value)

            r.HorizontalAlignment = xlHAlignRight

            r.Name = "Calibri"

            r.Size = 11

        Next r

    End With

End Sub

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Попробуйте:

Option Explicit

Sub test()

    With ThisWorkbook.Worksheets("Sheet1")
        'Copy value & formatting from cell A1 to A2
        .Range("A1").Copy .Range("A2")
    End With

End Sub

Результаты:

enter image description here

0 голосов
/ 27 июня 2019

VBA intellisense должен предупредить вас здесь.Если вы начнете вводить строку с ошибкой в ​​VBE, вы увидите, что Size является , а не доступным свойством Range объекта (ссылка на dox).

enter image description here

Если вы хотите установить размер шрифта 11, вам необходимо:

r.Font.Size = 11
...