У меня есть один Sub в VBA, который просматривает ключевой столбец на рабочем листе и извлекает значение из текстового файла на основе значения в столбце.Столбец А содержит последовательность из трех цифр от 110 до 717, всего 80 значений.Я устанавливаю Range в ("A: A"), затем ищу его в Range.find для ключевого значения в текстовом файле.Первая ячейка в диапазоне - это A1 со значением 110. Range.Find возвращает A6 для этого значения.Я не уверен, что может происходить в пространстве одной или двух строк кода, которые могут вызвать это.Есть идеи, что я делаю не так?
Вот мой саб.Это весь мой код.
Sub DoTheWork()
Dim wb As Workbook
Dim ws As Worksheet
Dim FSO As Object
Dim TF As Object
Dim TextFile
Dim TextLine
Dim TextLines As Variant
Dim x As Integer
Dim Code As String
Dim PurposeCode As Range
Dim SearchArea As Range
Dim CurrentRow As Integer
Dim KeyRow As Integer
Dim i As Integer
Set wb = Application.ActiveWorkbook
Set ws = ActiveWorkbook.Sheets(2)
TextFile = Application.GetOpenFilename("Text Files (*.txt), *.txt")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TF = FSO.OpenTextFile(TextFile, 1)
TextLine = TF.ReadAll
TF.Close
TextLines = Split(TextLine, vbCrLf)
Set PurposeCode = ws.Range("A:A")
For x = 0 To UBound(TextLines, 1)
Code = Right(Left(TextLines(x), 4), 3)
If IsNumeric(Code) Then
Code = CInt(Code)
Set SearchArea = PurposeCode.Find(Code, , xlValues, xlPart, xlByRows, xlNext)
If Not SearchArea Is Nothing Then
KeyRow = SearchArea.Row
Cells(KeyRow, 2).Value = Code
End If
End If
Next
End Sub
Пример вывода:
Спасибо
Изменить, чтобы показать содержимоеTextFile:
110 17 0.25
111 1 0.01
113 5 0.06
115 3 0.03
120 582 8.77
121
140 3,053 45.02
Итак, я открываю текстовый файл, считываю все строки в массив, затем беру трехзначное число в первых 4 символах файла и сопоставляю его с тем же самымтрехзначный код в таблице на листе 2.Я работаю только с sheet2, поэтому я указал sheet2, когда я установил ws.
Я изменил на ws.Cells(KeyRow, 2).Value = Code
, и это не имело значения.