Чтение текстового файла в VBA и изменение определенной ячейки в зависимости от ввода пользователя в Excel - PullRequest
0 голосов
/ 21 мая 2019

Сегодня я впервые начал кодировать в 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

Он должен заполнить ячейку "d4"значение обр (i + 1)

1 Ответ

0 голосов
/ 21 мая 2019

Если ваш «номер 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...