2017-11-23 8 views
-1

を交換するには、私の仕事です:エクセルVBAマクロを検索し、ここでnextRow nextColumnに

のSheet2:列Aは、私は次の使用例は、シート1で見つけるとmyLastColumnに列Bに指定された値で置換する文字列が含まれています。

Sheet1:列Aには、行1からmyLastRowまでの同一の文字列が含まれます。各セルには、Sheet2の列Aにある文字列が含まれます。この文字列をSheet2の列BをmyLastColumnの値に置き換えます。しかしながら;

シート1、セルA1は、シート2の値に置き換えられます、列B

そして、シート1、セルA2は次にシート2、カラムC.

によって置換され、シート1、セルA3になりますSheet2の列Dに置き換えられます。

これは、Sheet1で最後の行に到達し、最後の列がSheet2で到達するまで続きます。 A1の

内容: "ABCDEFGHIJ"、内容COLBのSheet2、A2の 内容に置き換え: "ABCDEFGHIJ"、内容COLCのSheet2、A3の 内容に置き換え:ここ

は一例です」 ABCDEFGHIJ "をコンテンツに置き換えました.ColD Sheet2、

私は以下のコードで開始しましたが、エラーが続きます。残念ながら、原因を特定できません。私はそれが直接の質問ではないことを知っていますが、誰かが私の記載された仕事を達成するのを助けることができますか?あなたのコード内で定義エラーの面では

Sub myReplace() 

    Dim myDataSheet As Worksheet 
    Dim myReplaceSheet As Worksheet 
    Dim myLastRow As Long 
    Dim myRow As Long 
    Dim myColumn As Long 
    Dim myLastColumn As Long 
    Dim myFind As String 
    Dim myReplace As String 

' Specify name of Data sheet 
    Set myDataSheet = Sheets("Sheet1") 

' Specify name of Sheet with list of replacements 
    Set myReplaceSheet = Sheets("Sheet2") 

' Assuming list to search start in column A on row 2, find last entry in list 
    myLastRow = myReplaceSheet.Cells(Rows.Count, "A").End(xlUp).Row 

' Assuming list of replacement start in column B on row 2, find last entry in list 
    myLastColumn = myReplaceSheet.Cells(Columns.Count, "2").End(xlToLeft).Column 

    Application.ScreenUpdating = False 

' Loop through all list of replacments 
    For myRow = 2 To myLastRow 
    For myColumn = B To myLastColumn 
'  Get find and replace values (from columns A and B) 
     myFind = myReplaceSheet.Cells(myRow, "A") 
     myReplace = myReplaceSheet.Cells(myRow, myColumn) 
'  Start at top of data sheet and do replacements 
     myDataSheet.Activate 
     Range("A1").Select 
'  Ignore errors that result from finding no matches 
     On Error Resume Next 
'  Do all replacements on column A of data sheet 
     Columns("A:A").Replace What:=myFind, Replacement:=myReplace, LookAt:=xlPart, _ 
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
      ReplaceFormat:=False 
'  Reset error checking 
     On Error GoTo 0 
    Next myColumn 
    Next myRow 

    Application.ScreenUpdating = True 

    MsgBox "Replacements complete!" 

End Sub 

enter image description hereenter image description here

+3

この中のどこかに質問がありません... –

+0

申し訳ありません、私は今追加しました。 – Yousuf

+0

もう一度同じスクリーンショットを2回追加したようです。どのようなエラーメッセージが表示され、どこにコードがありますか?私はあなたが何をしたいのか理解するのに苦労しています。多分必要なスクリーンショットが役立つかもしれません。 –

答えて

0

あなたが誤ってセルを使用しているので、それは次のようになります。

この:

myLastColumn = myReplaceSheet.Cells(Columns.Count, "2").End(xlToLeft).Column 

は次のようになります。

myLastColumn = myReplaceSheet.Cells(2,myReplaceSheet.Columns.Count).End(xlToLeft).Column 

セル参照はセル(行、列)です。 2行目ではなく2行目を開始する場合は、Rowも数値になります。

あなたの全体的な目的を達成する方法は、別の質問です。

関連する問題