首页 > 解决方案 > 返回多行

问题描述

我有大量文本,并试图将其中的一部分提取到我的表单中的一个字段中。我正在使用以下代码:

If InStr(1, abody(j), "Extent of Work:", 1) Then
    strExtWork = Mid(abody(j), InStr(abody(j), "Extent of Work:") + 16)
End If

这在返回一行时效果很好,但有时我试图提取的工作范围是多行,我有点碰壁......有什么想法吗?

以下是文本示例:

SEQUENCE NUMBER     CDC = RIC 

Transmit:  Date: 

*** R O U T I N E         *** Request No.: 000000000

Operators Notified: 


Start Date/Time:    01/01/18   At 00:15  Expiration Date: 01/01/18 

Location Information: 
County:     Municipality: 
Subdivision/Community:  
Street:               0 FAKE ST
Nearest Intersection: FAKE ST
Other Intersection:    
Lat/Lon: 
Type of Work: REPAIR  
Block:                Lot:                Depth: 2FT 

Extent of Work:  BEGINS 53FT W OF C/L OF INTERSECTION AND EXTENDS 785FT
  W.  MARK A 3FT RADIUS OF POLE NUMBERS 000/000, 000/000

Remarks:  
  Working For Contact:  NO ONE

Working For: NO ONE
Address:     123 FAKE ST
City:        SPRINGFIELD
Phone:       555-555-5555   Ext:  

Excavator Information: 
Caller:      NO ONE
Phone:       555-555-5555   Ext:  

Excavator:   NO ONE

Address:     123 FAKE ST
City:        SPRINGFIELD
Phone:       555-555-5555   Ext:          Fax:  
Cellular:     
Email:       EMAIL@EMAIL.COM

End Request 

我刚才注意到,如果工作范围的范围只有一行,它将不会导入。它仅在有多行时才导入,有什么想法吗?这是我正在使用的代码:

Dim rowOffset As Long

If InStr(1, abody(j), "Extent of Work:", 1) Then
    strExtWork = Mid(abody(j), InStr(abody(j), "Extent of Work:") + 16)
    rowOffset = 1 ' reinit
    While Left(abody(j + rowOffset), 8) <> "Remarks:" ' check if this is Remarks:
        strExtWork = strExtWork & abody(j + rowOffset)
        rowOffset = rowOffset + 1
        Me.ExtentofWork = Trim(strExtWork)
    Wend
End If

标签: vbams-access

解决方案


听起来您需要找到与 Split 命令一起使用的文本的公共拆分器值,使用它将文本解析为数组,然后循环该数组以构建您的文本。

这是一个例子:

VBA拆分字符串循环


推荐阅读