将单元格内容粘贴到包含文本格式的文本框中

我想做的事

我在单元格中有一些格式化的文本。 例如,在单元格A1中,我可以有: aaa bbb ccc

我想发送这个文本,格式,到一个文本框(不是在一个用户表单)。

macroslogging器只是复制文本,然后调整格式如下:

Range("A3").Select Selection.Copy ActiveSheet.Shapes.Range(Array("txt_1")).Select Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "aaa bbb ccc " Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 8).ParagraphFormat. _ FirstLineIndent = 0 With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 4).Font .Bold = msoFalse .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1 .Fill.ForeColor.TintAndShade = 0 .Fill.ForeColor.Brightness = 0 .Fill.Transparency = 0 etc etc 

我阅读关于复制单元格并粘贴到文本框中,但似乎没有保存文本格式。 就像是

 ActiveSheet.Paste Destination:=Feuil1.Shapes.Range(Array("txt_1")) 

将是伟大的,但显然不是如何粘贴到使用VBA的文本框。

据我所知,你需要为每个人物做特殊的格式。 这样你可以遍历它们来设置.Bolt / .Italic ….值。 或者像这样作弊:

 Sub Macro() Range("A3").Copy ActiveSheet.Shapes.Range(Array("txt_1")).ShapeRange(1).Select Application.SendKeys ("^v") End Sub 

虽然这是一个肮脏的方式去做…它应该工作…至less:/

您将需要Microsoft Forms 2.0对象库。

 Dim x As New MSForms.DataObject Set x = New MSForms.DataObject Selection.Copy x.GetFromClipboard ActiveSheet.Shapes.Range(Array("txt_1")).Select Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = x.getText(1) 

这应该保持格式,同时允许您粘贴到用户控件。 请让我知道这是否能解决您的问题。

来源: 粘贴到文本框 , 从剪贴板粘贴VBA

这里有一个解决scheme…我在示例中使用了ActiveCell值,但是可以使用A3的值。 这将ActiveCell值设置为文本框1,然后遍历ActiveCell字符,查看它们是否是粗体或斜体,然后相应设置文本框1中单个字符的格式:

 Sub passCharToTextbox() 'select Textbox 1: ActiveSheet.Shapes.Range(Array("Textbox 1")).Select 'set text: Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = ActiveCell.Value 'loop through characters in original cell: For i = 1 To Len(ActiveCell.Value) 'add bold/italic to the new character if necessary: If ActiveCell.Characters(i, 1).Font.Bold = True Then Selection.ShapeRange(1).TextFrame2.TextRange.Characters(i, 1).Font.Bold = True Else Selection.ShapeRange(1).TextFrame2.TextRange.Characters(i, 1).Font.Bold = False End If If ActiveCell.Characters(i, 1).Font.Italic = True Then Selection.ShapeRange(1).TextFrame2.TextRange.Characters(i, 1).Font.Italic = True Else Selection.ShapeRange(1).TextFrame2.TextRange.Characters(i, 1).Font.Italic = False End If Next i End Sub