2017-08-29 9 views
0

良い午後は、VBAは、特定のテキスト値

以下のコードのみにかかわらず、細胞D2-D5にあるもののテキストの列のセル範囲D2-D5にワークシート名を追加した場合、列にテキストを追加するためにコードを修正します。

列Dに「カテゴリ」または「ストア」という特定の単語がある場合は、ワークシート名と「_」のいずれかがセル値に追加されるというコードを修正するよう指示することはできますか"Category" "Store"ではなく、以下のコードのセルD2-D5にのみ適用できますか?

例えば:

Sheet1_Category Sheet1_Store

ws.Range("D2").Value = ws.Name & "_" & ws.Range("D2").Value 
       ws.Range("D3").Value = ws.Name & "_" & ws.Range("D3").Value 
       ws.Range("D4").Value = ws.Name & "_" & ws.Range("D4").Value 
       ws.Range("D5").Value = ws.Name & "_" & ws.Range("D5").Value 
       DoEvents 
       ws.Copy 
       ActiveWorkbook.SaveAs sheetDirectory & Application.PathSeparator & ws.Name & "_" & wbName 
       DoEvents 
       ActiveWorkbook.Close 
       validWs = True 
     End If 
    Next ws 

答えて

0

それはとても

If instr(1,ws.Range("D3").Value,"CATEGORY")>0 then 
    ws.Range("D3").Value = ws.Name & "_" & ws.Range("D3").Value 
end if 

それとも、like

を使用することができますよう IFINSTRを使用することになり210

か、これは私が下記の改正のコードを生成するには、上記に織り込まれているhttp://www.cpearson.com/excel/findall.aspx

+0

を列Dに「カテゴリ」または「ストア」という単語を含むセル値を検索する「D3」を削除して「D:D」に修正する –

+0

編集を参照してください。 –

0

を助けるrange("D:D").find

を使用することができます。私はそれを行う必要があるので、私は明確にすることができ

categoryData = ws.Range("D1").Resize(ws.UsedRange.Rows.count, 1) 
       For i = 1 To UBound(categoryData) 
        If categoryData(i, 1) = "store" Then categoryData(i, 1) = ws.Name & "_" & categoryData(i, 1) 
        If categoryData(i, 1) = "category" Then categoryData(i, 1) = ws.Name & "_" & categoryData(i, 1) 
       Next i 
       ws.Range("D1").Resize(ws.UsedRange.Rows.count, 1) = categoryData 
       DoEvents 
       ws.Copy 
       ActiveWorkbook.SaveAs sheetDirectory & Application.PathSeparator & ws.Name & "_" & wbName 
       DoEvents 
       ActiveWorkbook.Close 
       validWs = True 
     End If 
    Next ws 
関連する問題