Функция поиска только находит часть значения в VBA - PullRequest
0 голосов
/ 06 марта 2019

Я написал макрос в VBA, который копирует значения из одного листа в другой, используя функцию поиска.

Моя рабочая книга рассчитывает определенные переменные в зависимости от длины пролета моста. Длина пролета меняется итеративно, и я назвал переменную SpanLength. Каждый раз, когда длина диапазона изменяется, макрос копирует максимальные значения и вставляет их в лист «МАКСИМАЛЬНЫЙ» (показан на прилагаемом изображении). В MAXIMUM я назвал всю верхнюю строку длины пролета (1, 1.2, 1,4 и т. Д.) "FindSpanLength". Затем макрос находит подходящую длину диапазона и вставляет рядом с ним максимальные значения. Этот макрос работает за исключением случаев с длинами промежутков 2, 4, 6 и 8, где вместо того, чтобы находить эти длины промежутков в MAXIMUM, он находит длины промежутков 1,2, 1,4, 1,6 и 1,8 и копирует результаты там.

x

Я пытался использовать Lookat: = xlWhole, но это усугубляет проблему. У кого-нибудь есть другие решения?

xlWhole

 Private Sub Max()

    ' Chooses correct column: Find the span length column and name this outputcolumn
    Dim spanlengthcell As Range, outputcolumn As Integer
    Set spanlengthcell = Range("FindSpanLength").Find(Range("SpanLength").Value, LookIn:=xlValues, Lookat:=xlPart)
    If Not spanlengthcell Is Nothing Then
     outputcolumn = spanlengthcell.Column
    End If

' Chooses correct row: If the cell to the left of spanlengthcell is empty then this is the first row of output otherwise find next empty cell down
If MAXIMUM.Cells(4, outputcolumn + 1).Value = "" Then
    outputrow = 4
ElseIf MAXIMUM.Cells(5, outputcolumn + 1).Value = "" Then
    outputrow = 5
Else
    outputrow = MAXIMUM.Cells(4, outputcolumn + 1).End(xlDown).Row + 1
End If

' Copy starting point, max bending moment and max shear from calculate to output
MAXIMUM.Cells(outputrow, outputcolumn + 1).Value = Sheets("Calculate").Range("StartPoint").Value
MAXIMUM.Cells(outputrow, outputcolumn + 2).Value = Sheets("Calculate").Range("[enter image description here][1]MaxBM").Value
MAXIMUM.Cells(outputrow, outputcolumn + 3).Value = Sheets("Calculate").Range("MaxSF").Value

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...