0
Sub Nameitem()
Dim Baza As Range
Dim Lista As Range
For Each Lista In Range("C12:C32")
        For Each Baza In Range("[Back.xlsx]New_Games!$B$2:$B$10000")
            If Baza.Value = Lista.Value Then
        'copy E Column from Back(baza) to D in Lista
        else
        'no set value
        End if
    Next 
Next
End Sub

Excelでマクロの書き込みを開始したばかりで、EX列のフォーム1を別のExcelのDY列にコピーする関数を作成するのを手伝う必要があります

4

2 に答える 2

0

Workbook オブジェクトを使用して別のブックを開きます。

Dim wbBaza As Workbook
Set wbBaza = Workbooks.Open("Back.xlsx")

次に、他のワークブックのデータにアクセスできます。

wbBaza.Sheets("New_Games").Range()

コードのようにループします。

For Each Baza in wbBaza.Sheets("New_Games").Range("B2:B10000")

EXおよびDY列の意味がわかりませんが、比較する値と同じ行にデータがある場合は、範囲を使用してその列もカバーします...例:

For Each Baza in wbBaza.Sheets("New_Games").Range("B2:F10000")

次に、宛先列が F の場合、次のことができます。たとえば、.Cells() を使用してコピーします。

Lista.Cells(1,1) = Baza.Cells(1,5)

これは、Baza の範囲が B から F であるため、B、C、D、E、F=5 です。

もちろん、コピーする場所の範囲も開く必要があります...コードのように、その単一の列 Range("C12:C32") しかありません

編集; そうです、E:X から D:Y にコピーする必要がありますが、その場合は .Cells を介してループを作成するだけです...

ひどいバージョンのようではありませんか。

For Each Lista In Range("A12:X32")
    For Each Baza In wbBaza.Sheets("New_Games").Rows
        If Lista.Cells(1, 3) = Baza.Cells(1, 2) Then
            For iLoop = 5 To 25 ' E=5 to X=25
                Lista.Cells(1, iLoop - 1) = Baza.Cells(1, iLoop)
            Next
        End If
        If Baza.Row = 10000 Then
            Exit For
        End If
    Next
Next
于 2013-07-10T08:26:31.013 に答える
0
Application.Workbooks("book1").Worksheets("sheet1").Range("E:X").Copy _    
             Application.Workbooks("book2").Worksheets("sheet2").Range("D:Y")

同じブック内のシートをコードとして参照する場合は、Application.Workbooks("...").Worksheets("...") をシートのコード名に置き換えることができます。

于 2013-07-10T08:16:23.800 に答える