我试图遍历单元格中的每个字符来确定某个单词是否带有下划线和斜体,但到目前为止循环运行并卡住。如何复制和移动斜体和下划线的单词?这是我到目前为止所拥有的。我问了一个新问题,因为我在这个问题上还不够清楚。可以通过 Array split and extract vba excel 访问。 .
For Each j In ActiveSheet.Range("C1:C105")
v = Trim(j.Value)
If Len(v) > 0 Then
v = Replace(v, vbLf, " ")
Do While InStr(v, " ") > 0
v = Replace(v, " ", " ")
Loop
arr = Split(v, " ")
For Z = LBound(arr) To UBound(arr)
e = arr(Z)
For i = 1 To Len(v)
If j.Characters(i, 1).Font.Italic = True And j.Characters(i, 1).Font.Underline = True Then
j.Value.Copy
End If
Next i
Next Z
End If
Next j
最佳答案
以下代码将 Debug.Print
任何给定单元格中带下划线且格式为斜体的所有单词:
Option Explicit
Public Sub tmpSO()
Dim i As Long
Dim j As Range
Dim StartPoint As Long
Dim InItalicUnderlinedWord As Boolean
For Each j In ThisWorkbook.Worksheets(1).Range("C1:C105")
If Len(j.Value2) > 0 Then
For i = 1 To Len(j.Value2)
If j.Characters(i, 1).Font.Italic And j.Characters(i, 1).Font.Underline Then
If InItalicUnderlinedWord = False Then
StartPoint = i
InItalicUnderlinedWord = True
End If
Else
If InItalicUnderlinedWord = True Then
Debug.Print Mid(j.Value2, StartPoint, i - StartPoint)
InItalicUnderlinedWord = False
End If
End If
If InItalicUnderlinedWord = True And i = Len(j.Value2) Then
Debug.Print Mid(j.Value2, StartPoint, i - StartPoint + 1)
InItalicUnderlinedWord = False
End If
Next i
End If
Next j
End Sub
Debug.Print
将把斜体
和下划线
单词输出到VBE 的直接窗口中。如果您希望这些词出现在其他地方,那么您必须在两个(!)位置调整代码:
- 一旦进入以
InItalicUnderlinedWord
开头的部分,即可在单元格内的任意位置进行查找 - 在以
If InItalicUnderlinedWord = True And i = Len(j.Value2) Then
开头的部分中,对于单元格中最后字符也是下划线
和斜体
。
如果您有任何疑问或问题,请告诉我。
关于arrays - 数组分割和提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38725078/