【问题标题】:Reading a text file in vba and modifying a certain cell depending on the user input in excel在 vba 中读取文本文件并根据 excel 中的用户输入修改某个单元格
【发布时间】:2019-05-21 00:46:02
【问题描述】:

我今天第一次开始使用 vba 编码。我的代码应该首先要求用户输入,然后从文本文件中读取。如果用户输入与文本文件中的 100 数字匹配,则它应该使用 100 数字旁边的任何内容填充某个单元格,直到工作表中的 - 。如果它是 GHF897-HTU71L,那么它应该填充单元格直到 GHF897。

这是文本文件

HGJDJS UFHFHFHB HHGG 0001    100000896765    GHF897-HTU71L-7811-YTHIN            U1P903678    GHF897_0000000016       000001    |||||||    W69      000001    |||||||---    X72    BAL TAG    000002    |||||||    X75    CONFIG    000001    |||||||

 GFHRTE 0001    100657853125   FGD867-YTURGL-TT55-YTHU/NH7            U1P903679    HFJDJH1_0000000015   

Sub readFile()
    Dim myValue As Variant

    myValue = InputBox("Please Enter/Scan the order number", "Order Number")

    Dim arr() As String
    Dim i As Integer

    Const strFileName As String = "C:\text2.txt"

    FileNum = FreeFile

    Open strFileName For Input As #FileNum

    Line Input #FileNum, StrBuffer

    i = 0

    Do Until EOF(1)
        arr = Split(StrBuffer, vbTab)

        If arr(i) = myValue Then Range("D4").Value = arr(i + 1)

        i = i + 1

        'End If
    Loop

    Close #1
End Sub

它应该用 arr(i+1) 的值填充单元格“d4”

【问题讨论】:

  • 附带问题:您有一个文件句柄#FileNum,然后使用EOF(1)Close #1,应该是EOF(#FileNum)Close #FileNum

标签: excel vba


【解决方案1】:

如果您的“100 数字”出现在诸如“GHF897-”(字母、字母、字母、数字、数字、数字、破折号)之类的字符串中,您可以使用 RegEx 来查找它。下面的函数在输入字符串中搜索匹配项并将其返回。您应该能够操作输出字符串以满足您的需要。有大量的 RegEx 教程可以很容易地在网上找到,或者您可以搜索 StackOverflow 以获取更多示例和想法。

Function MatchNumber(str As String) As String

    Dim intNo As Integer
    Dim RegEx As Object
    Dim obj As Object

    Set RegEx = CreateObject("vbscript.regexp")

    RegEx.Pattern = "[A-Z][A-Z][A-Z][0-9][0-9][0-9]-"

    Set obj = RegEx.Execute(str)

    MatchNumber = obj(0)

End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2013-10-18
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多