VBAarrays提取数据
当“不是rng.Characters(iEnd,1).Font.Italic”中的“Not”被省略时,代码能够拉斜体和加下划线的单词,但是当我在代码中放置“Not”下划线,而不是斜体字,它不起作用。 我不确定为什么“不”不工作。 下面的图片是源表单和提取数据的新表单。 我能够使用代码得到下划线和斜体,但我join不,所以我可以得到下划线,但不斜体。 应该出来的数据是标记为1的图片中的第5行。
Sub extract() Dim dataRng As Range, cl As Range Dim marr As Variant Set dataRng = Worksheets("Sheet1").Range("C1:C10") With Worksheets("Sheet2") For Each cl In dataRng marr = GetUnderlines(cl) If IsArray(marr) Then .Cells(.Rows.Count, 4).End(xlUp).Offset(1).Resize(UBound(marr) + 1) = Application.Transpose(marr) Next End With End Sub Function GetUnderlines(rng As Range) As Variant Dim strng As String Dim iEnd As Long, iIni As Long, strngLen As Long strngLen = Len(rng.Value2) iIni = 1 Do While iEnd <= strngLen Do While rng.Characters(iEnd, 1).Font.Underline And Not rng.Characters(iEnd, 1).Font.Italic If iEnd = strngLen Then Exit Do iEnd = iEnd + 1 Loop If iEnd > iIni Then strng = strng & Mid(rng.Value2, iIni, iEnd - iIni) & "|" iEnd = iEnd + 1 iIni = iEnd Loop If strng <> "" Then GetUnderlines = Split(Left(strng, Len(strng) - 1), "|") End Function
.Font.Underline
不返回Boolean(True/False)
;)它返回一个Long
如果你添加一个Watch
你可以看到它自己。
改变你的代码
Do While rng.Characters(iEnd, 1).Font.Underline = xlUnderlineStyleSingle _ And Not rng.Characters(iEnd, 1).Font.Italic
当条件改变时:
下划线不是boolean
。
Do While (rng.Characters(iEnd, 1).Font.Underline = -4142 Or _ (rng.Characters(iEnd, 1).Font.Underline = 2 And _ Not rng.Characters(iEnd, 1).Font.Italic))
您的代码正在截断最后一个字符。
Function GetUnderlines(rng As Range) As Variant Dim strng As String Dim iEnd As Long, iIni As Long, strngLen As Long strngLen = Len(rng.Value2) iIni = 1 Do While iEnd <= strngLen Do While rng.Characters(iEnd, 1).Font.Underline = xlUnderlineStyleSingle And Not rng.Characters(iEnd, 1).Font.Italic And rng.Characters(iEnd, 1).Text <> " " iEnd = iEnd + 1 If iEnd > strngLen Then Exit Do Loop If iEnd > iIni Then strng = strng & Mid(rng.Value2, iIni, iEnd - iIni) & "|" End If iEnd = iEnd + 1 iIni = iEnd Loop If strng <> "" Then GetUnderlines = Split(Left(strng, Len(strng) - 1), "|") End Function