在将单个单元格添加到多个string时,将某些文本string指定为粗体

我想知道是否有一种方法来指定单元格中的哪些文本为粗体而不知道字符的开始或长度。 我需要做的是在单个单元格内的单独连续行上input多个string(某些用户input)的文本,同时使预定的string(隔行)为粗体。

我使用chr(10)将多个文本框中的自由文本编译到不同行的同一单元格中。 例如:

 CmpTxt = myTxt1 & Chr(10) & userTxtBox1.value CmpTxt = CmpTxt & Chr(10) & myTxt2 & Chr(10) & userTxtBox2.value activesheet.range("A1").value = CmpTxt 

在每个myTxt加粗的地方,跟着用户的文本在同一个单元格A1下面。

 My first line of text posed as a question Users' corresponding answer My second line of text posed as a question Users' second corresponding answer 

在这里,我可以使用.characters来使myTxt1加粗,但是因为我不知道第二行/用户文本会有多长,我无法知道从哪里开始,以加粗第三行myTxt2

有没有办法预先确定myTxt的粗体字体types时,将其添加到string? 如果没有办法, a)找出单元格中的每一行文本,就好像单元格中的一行一样,或者b)findmyTxt或字符开始的特定string,这些string的长度,向A1添加文字后是否为粗体?

这是一个简单的使用Chr(10)字符来确定开始和结束粗体的解决scheme:

 Sub HighLightIt() Dim rng As Range Set rng = ActiveSheet.Range("A1") Dim p1 As Long Dim p2 As Long Do 'point to the end of the question p2 = InStr(p1 + 1, rng.Value, vbLf) If p2 = 0 Then Exit Do End If With rng.Characters(Start:=p1 + 1, Length:=p2 - p1).Font .Bold = True End With 'point to the end of the user input p1 = InStr(p2 + 1, rng.Value, vbLf) If p1 = 0 Then Exit Do End If Loop End Sub 

如果任何问题或任何答案都包含换行符,则这将失败。 您可能不希望问题或答案允许换行,因此在将问题和答案存储到合并单元格时,您可能会考虑使用Replace(userTxtBox1.value, vbLf, "|") (或类似)。

在Chr(10)上拆分成一个variables数组,然后循环遍历从lbound(arr)+1到ubound(arr)步骤2的数组。

 Dim arr As Variant, a As Long With ActiveSheet.Range("A1") arr = Split(.Value2, Chr(10)) For a = LBound(arr) + 1 To UBound(arr) Step 2 With .Cells(1).Characters(Start:=InStr(1, .Value2, arr(a)), Length:=Len(arr(a))).Font .Bold = True .ColorIndex = 5 End With Next a End With 

我也扔了一个蓝色的字体。

如果答案是相同的,这实际上会失败,但是您可以通过将InStr的起始位置提前一个答案长度来控制。