2017-11-21 14 views
0

私のコーディングのセクションに問題があります。私は、用語のマクロ検索行1を持っていて、見つかった場合は、1つのセルをオフセットし、F列まで選択しようとしています。私の問題は、1つの用語だけを検索できるということです。私はVBAウィンドウを開き、2番目の単語を検索する場合は単語を変更する必要があります。私は、どちらかの用語を検索して、Row( "1:1")の最初のオカレンスに基づいてオフセットしたいと思います。ここに私が持っているものがあります。 「マット」という言葉も探してみる必要があります。検索範囲が複数の用語を探している場合

Rows("1:1").Select 
Dim SrchRng As Range, cel As Range 
Set SrchRng = Range("1:1") 
For Each cel In SrchRng 
    If InStr(1, cel.Value, "Units per Assy") > 0 Then 
     cel.Offset(0, -1).Select 
    End If 
Next cel 
Range(ActiveCell.Offset(0, 0), Cells(Selection.Row, 6)).Select 
Selection.EntireColumn.Select 
+1

If InStr(1、cel.Value、 "Units per Assy")> 0およびInStr(1、セル.Value、 "Mat")> 0 Then''? –

+0

@ShaiRadoあなたは私にそれを打つ。 :) – sktneer

+0

これは、同じセル内の両方の値を探しているようです。これらの用語は別々のセルにあり、最初の出現に基づいてそのステートメントに移動する必要があります。 –

答えて

3

なぜ次のような条件を追加しませんか?

If InStr(1, cel.Value, "Units per Assy") > 0 Or InStr(1, cel.Value, "Mat") > 0 Then 
+0

しかし、あなたは答え全体を入力していました:) –

+0

ええ、それは正しいです。 Lol – sktneer

+0

この作品は最初の用語 "Mat"を見つけていますが、それでも次の用語を探すために動きます。私はそれを直接ステートメントに移動し、オフセットと列の選択を完了する必要があります。ありがとう...その近づく。 –

0

多くのセルでRange.Select()を使用する理由を理解することは難しいです。 単語のリストから検索するには、次のようにコードを採用することができます。

'Assume you search words are on a hidden sheet called 'Search Strings' from 
'range A1:A5 

Option Explicit 
Public Sub highlight() 
    Dim SrchRng As Range, cel As Range 
    Dim searchStringsRange As Range, celSearch As Range 
    Set SrchRng = Range("1:1") 
    Set searchStringsRange = Sheets("Search Strings").Range("A1:A5") 
    'SrchRng.Select 
    For Each cel In SrchRng 
     For Each celSearch In searchStringsRange 
      If InStr(1, cel.Value, celSearch.Value) > 0 Then 
       cel.Offset(0, -1).Select 
       Exit For 
      End If 
     Next 
    Next cel 
    'Range(ActiveCell.Offset(0, 0), Cells(Selection.Row, 6)).Select 
    'Selection.EntireColumn.Select 
End Sub 

上記の希望は、それがオフセットを使用して唯一のセルを選択し、役立ちます。 どのように強調表示/選択したいかの詳細を教えてください

+0

range.selectを使用する必要はありません。 cel.offset selectは、検索文字列がどこにあっても、オフセットして列Fまで選択する限り機能します。 –

+0

列選択部分全体は、それらの列のデータの空白行によるものです。 –

+0

行(1:1)を横切って検索し、列(F:F)を強調表示しています。これは私のためにちょっと混乱しています、私はあなたが別の行(例えば2:2)で一致するセルを高くすることを期待します。 –

0

ありがとうございます。 sktneerの答えの後、私は文のための出口を追加する必要がありました。今は完璧に動作します。以下は更新されたコードです。

行( "1:1")。 点心SrchRngで範囲を選択し、範囲 設定SrchRng =範囲( "1:1")として、セル画SrchRng 内の各セル画については InStr関数(1、cel.Valueの場合(0、-1)。選択 終了の場合 終了の場合終了 次のセル 範囲(ActiveCell( "0")) "0" (0、0)、セル(Selection.Row、6))選択

関連する問題