В Excel 2007 вставить формулу или значение, без изменения форматирования ячейки - вставить неактивна

Мне просто нужно вырезать содержимое ячейки, оставляя формат исходной ячейки неизменным, и вставить соответствующее форматирование ячейки назначения... Думаю, не редкость спросить?

Я искал, но Google Search filter bubble получил меня-нада.

Специальная вставка недоступна для разрезов? Параметры вставки выделены серым цветом.

Я попытался записать макрос для копирования с открытой боковой панелью буфера обмена (скопированное значение появляется там), затем удалите исходную ячейку, пока я в нем (оставляя формат) затем вставить в ячейку назначения, нажав на элемент буфера обмена. Это работает при записи, но записанный макрос возвращает ошибку "PasteSpecial methos of Worksheet class failed". В то время как элемент находится в боковой панели, фактический буфер обмена был очищен.

там, кажется, некоторые возможные обходные пути:
Остановить буфер обмена очищается excel ,( какой гений пришел с идеей удаления буфера обмена? Я думаю, нам просто повезло, что они были работает в excel, а не в windows или office...)
2: как-то вставить вырезанный текст как "значение" или "Формула"или " HTML".
3. очень много кода, чтобы установить диапазон, копировать, вставить, выделить диапазон, удалить, удалить имя диапазона, выделите диапазон назначения!

буду очень благодарен за помощь с этой загадкой.

18
задан Piecevcake
18.05.2023 5:31 Количество просмотров материала 3657
Распечатать страницу

2 ответа

вот обходной путь без VBA / Makros:

вместо выбора и вырезания "целой" ячейки Выделите и вырежьте "содержимое" ячейки (сначала выделите ячейку, затем, например, нажмите F2, а затем Ctrl+A). После использования" вырезать", ячейка будет пустой, но формат не будет изменен.

когда вы вставляете, ваша ячейка назначения будет держать это оригинальный формат, но получить значение / формулу из исходной ячейки. Если вы хотите перенести формат из источника в место назначения просто используйте копирование и вставку (только вставка формата).

0
отвечен Albin 2023-05-19 13:19

сделал это! С помощью Как исключить перекрытие диапазонов из диапазона ? (Переместить макрос содержимого ячейки)

Sub E____MoveSelectedCellsContentsOnlyKeepFormats_Ctrl_M()

Application.CutCopyMode = False 'clears any existing copy mode
On Error GoTo EXITSUB 'exits if cancel clicked

    Dim RANGE_TO_COPY As Range 'define inputbox variable
    Dim CELL_TO_PASTE_TO As Range 'define inputbox variable

'-----------name SOURCE range = selected before macro started
    Set RANGE_TO_COPY = Selection 'is this necessary, when not using inputbox?
        COPYSOURCE = RANGE_TO_COPY.Address(False, False) 'name the inputbox selection as a range

'=========== inputbox to select PASTE destination
    Set CELL_TO_PASTE_TO = Application.InputBox("select top left cell of range to PASTE TO, with the mouse", Default:=Selection.Address, Type:=8)

'------------- assigns name to the selected DESTINATION range
    PASTERANGE = CELL_TO_PASTE_TO.Address(False, False) 'name the inputbox selection as a range

'=========== action = COPY SOURCE
    Range(COPYSOURCE).Copy

'======================PASTE TO DESTINATION
'DEFAULT: PASTE FORMULAS AND NUMBER FORMATS (MATCHES DESTINATION FORMAT, keeps date/ etc original):

    Range(PASTERANGE) _
    .PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'formulas+number format

'======DELETE SOURCE CELL CONTENTS - remove if COPY required
'------------ loop - from superuser - deletes source but NOT pasterange overlap
Dim rgLoop As Range, rgToDelete As Range
        For Each rgLoop In Range(COPYSOURCE).Cells
            If Intersect(rgLoop, Range(PASTERANGE).Resize(Range(COPYSOURCE).Rows.Count, Range(COPYSOURCE).Columns.Count)) Is Nothing Then
                If rgToDelete Is Nothing Then Set rgToDelete = rgLoop Else Set rgToDelete = Union(rgToDelete, rgLoop)
            End If
        Next rgLoop

        rgToDelete.ClearContents 'deletes contents keeps formatting

EXITSUB:

End Sub

: -)

0
отвечен Piecevcake 2023-05-19 15:36

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх