1

既にコードが少し入っているスプレッドシートのループがあります。基本的にVBAでやりたいことは次のとおりです。

If x = Searchstring.row then GoTo continue(これは定義されていません)

現在 を使用してIf x = activecell.row GoTo continueいますが、新しい行に情報を追加すると、検索文字列行を含む古いセルが更新されます (もはや ではないためActiveCell.row)

以下は私が使用しているコードです(少し面倒です):

Function RelLookup(ByVal Searchstring As String, Reldate As String, _
                SearchRange As Range, TicketRange As Range, ReldateRange As Range, _
                RelRange As Range, Optional UniqueOnly As Boolean = True)

Dim X As Long, Task As String, ReldateVal As String, TicketVal As String, ReturnRel As String, _
Result As String

For X = 1 To SearchRange.Count
If X = ActiveCell.row Then GoTo Continue


Task = SearchRange(X).Value
ReldateVal = ReldateRange(X).Value
TicketVal = TicketRange(X).Value
ReturnRel = RelRange(X).Value

If (Task = Searchstring) And (ReldateVal = Reldate) Then
Result = Result & " Rel " & ReturnRel & " (" & TicketVal & ")" & " &"
End If

Continue:
Next X

If Len(Result) > 0 Then RelLookup = Left(Result, Len(Result) - 2)


End Function
4

1 に答える 1

0

この場合の回避策を見つけました (@John Bustos の助けに感謝します)。「RowNumber」という整数を追加しました。次に、VBA を読み取りに変更しましたIf x = RowNumber GoTo Continue が、今では長い式があります

=RelLookup(E955,Row(E955),"Not Rel",E:E,B:B,I:I,A:A,"")

Integer RowNumber は、Row(E955) の値によって決定されます。

別の文字列を導入せずにこれを行うためのより簡単で信頼性の高い方法がある場合に備えて、質問を開いたままにします(ただし、それを回避するより基本的な方法は考えられません)

于 2013-03-28T13:08:43.557 に答える