it-swarm.com.de

Kopieren des Zellenwerts unter Beibehaltung der Formatierung von einer Zelle in eine andere in Excel mit VBA

In Excel versuche ich, Text von einer Zelle in eine andere Zelle in einem anderen Blatt zu kopieren. Die Quellzelle enthält formatierten Text (fett, unterstrichen, verschiedene Farben). Wenn ich jedoch den Text mit VBA in die andere Zelle kopiere, geht die Formatierung verloren.

Ich weiß, dass Excel nur den Textwert kopiert. Gibt es eine Möglichkeit, den HTML-Text (anstatt Nur-Text) aus einer Zelle zu lesen?

Ich habe das gegoogelt und keine Antworten erhalten. Ich weiß, dass wir die Formatierung kopieren können, wenn wir Kopieren und Einfügen verwenden. Z.B.

Range("F10").Select
Selection.Copy
Range("I10").Select
ActiveSheet.Paste

Aber ich möchte es ohne Kopieren und Einfügen tun, da mein Ziel eine zusammengefügte Zelle ist und nicht die gleiche Größe wie meine Quellzelle hat. Gibt es eine Option in Excel VBA, um dies zu tun?

EDIT: Ich konnte es mit dem folgenden Code lösen.

Range("I11").Value = Range("I10").Value
For i = 1 To Range("I10").Characters.Count
    Range("I11").Characters(i, 1).Font.Bold = Range("I10").Characters(i, 1).Font.Bold
    Range("I11").Characters(i, 1).Font.Color = Range("I10").Characters(i, 1).Font.Color
    Range("I11").Characters(i, 1).Font.Italic = Range("I10").Characters(i, 1).Font.Italic
    Range("I11").Characters(i, 1).Font.Underline = Range("I10").Characters(i, 1).Font.Underline
    Range("I11").Characters(i, 1).Font.FontStyle = Range("I10").Characters(i, 1).Font.FontStyle
Next i
8
BlackCursor

So kopieren Sie die Formatierung:

Range("F10").Select
Selection.Copy
Range("I10:J10").Select ' note that we select the whole merged cell
Selection.PasteSpecial Paste:=xlPasteFormats

durch das Kopieren der Formatierung werden die zusammengefügten Zellen zerstört, sodass Sie die Zelle verwenden können, um sie wieder zusammenzufügen

Range("I10:J10").Select
Selection.Merge

Um einen Zellenwert zu kopieren, ohne etwas anderes zu kopieren (und nicht Kopieren/Einfügen), können Sie die Zellen direkt ansprechen

Range("I10").Value = Range("F10").Value

andere Eigenschaften (Schriftart, Farbe, etc ) können auch kopiert werden, indem die Eigenschaften des Bereichsobjekts auf dieselbe Weise direkt angesprochen werden

5
SeanC

Excel 2010 verwenden? Versuchen

Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
7
Eric

Ich bevorzuge die Verwendung von select

     With sheets("sheetname").range("I10") 
          .PasteSpecial Paste:=xlPasteValues, _
                  Operation:=xlNone, _
                  SkipBlanks:=False, _
                  Transpose:=False
          .PasteSpecial Paste:=xlPasteFormats, _
                  Operation:=xlNone, _
                  SkipBlanks:=False, _
                  Transpose:=False
          .font.color = sheets("sheetname").range("F10").font.color
      End With
      sheets("sheetname").range("I10:J10").merge
3
scott
Sub CopyValueWithFormatting()
    Sheet1.Range("A1").Copy
    With Sheet2.Range("B1")
        .PasteSpecial xlPasteFormats
        .PasteSpecial xlPasteValues
    End With
End Sub
1
Ankush agarwal

Kopieren des fetten Textes von einem Blatt in ein anderes in Excel Durch Verwendung von VBScript 'Instanzobjekt erstellen

Set oXL = CreateObject("Excel.application")
oXL.Visible = True

Set oWB = oXL.Workbooks.Open("FilePath.xlsx")
Set oSheet = oWB.Worksheets("Sheet1")         'Source Sheet in workbook
Set oDestSheet = oWB.Worksheets("Sheet2")       'Destination sheet in workbook

r = oSheet.usedrange.rows.Count
c = oSheet.usedrange.columns.Count

For i = 1 To r
    For j = 1 To c
        If oSheet.Cells(i,j).font.Bold = True Then

            oSheet.cells(i,j).copy
            oDestSheet.Cells(i,j).pastespecial
        End If
    Next
Next

oWB.Close
oXL.Quit