【发布时间】:2016-06-28 09:57:46
【问题描述】:
我在 Excel 中有一个列表,其中显示 A 列中的标题和 B 列中的值,如下所示:
ARTICLE_POSNO 1
ARTICLE_ARTNO 111123
ARTICLE_DESCRIPTION black pens
ARTICLE_POSNO 2
ARTICLE_ARTNO 280708
ARTICLE_DESCRIPTION yellow paper
ARTICLE_POSNO 3
ARTICLE_ARTNO 999912
ARTICLE_DESCRIPTION blue scissors
我要做的是构建一个 VB 函数,该函数创建一个包含值的数组,因此我可以像这样打印它:
POS ART NO DESCRIPTION
1 111123 black pens
2 280708 yellow paper
3 999912 blue scissors
下面是我当前的脚本,它搜索标题 -> 获取它们旁边的值,最后发送一个值的 Msgbox。对于这个列表,这意味着 9 个 Msgbox。 理想情况下,它只会显示一个包含所有文章信息的消息框。
有什么想法吗?
非常感谢!
Sub FindArticles()
Dim FirstAddress As String
Dim MySearch As Variant
Dim Rng As Range
Dim I As Long
MySearch = Array("ARTICLE_POSNO", "ARTICLE_ARTNO", "ARTICLE_DESCRIPTION")
With Sheets("Sheet1").Range("A1:A1000")
For I = LBound(MySearch) To UBound(MySearch)
Set Rng = .Find(What:=MySearch(I), _
After:=.Cells(.Cells.Count), _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
FirstAddress = Rng.Address
Do
ArtValue = Rng.Offset(0, 1) 'Gather the value to the right
MsgBox ArtValue
Set Rng = .FindNext(Rng)
Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress
End If
Next I
End With
End Sub
【问题讨论】: