これは私の最初のVBAプログラムです。 私はAeroSpace部門で働く夏期インターンです。私たちのプロジェクトでは頭が掛かっている衛星生産が含まれており、私は最終品目データパッケージを顧客に引き渡しています。 これらの成果物の1つに、As Design As Buildと呼ばれるものが含まれています。 本質的には、P/Nをあるシートで別のシートに検索するマクロを作成しました。どちらもコントローラでカウンタ、xはBomシートのカウンタ、yはマスタシートのカウンタです。 P/Nが等しい場合、BOMからマスターシートにいくつかのセルがコピーされます。 ここでBOMは絶えず変化するシートであり、マスターは各車両が持つべきものです。 不足している項目が私の問題です。私はそれをコード化しましたので、BOMの不足しているアイテムは、マスターで空白を残してスキップされます。ただし、マスタにないアイテムがBOMにある場合は、すべての行を検索し、最後にヒットしてからブレークします。私はそれに対抗するためにこれを追加しようとしたが、それは動作していないようです:私はかなりのx値をバンプまたはyの値がある場合はボムシート上の行を下に移動しようとしているVBA 2枚のシートでP/Nを検索し、データをコピー
Else
y = y + 1
If (y = FinalRow) Then
x = x + 1
ループを続けるためにマスターシートの終わりに達しました。 助けや批判はすばらしいでしょう! サブADABは() は、「私はあなたのシートを 『活性化』に維持する必要性を参照してくださいいけないマスターとBOMのワークシート
Dim dataFile As String
Dim WB As Workbook
Dim x As Integer
Dim y As Integer
Dim iFound As Integer
Dim BomValue As String
Dim MasterValue As String
'Set variables
Workbooks("ADAB Tool.xlsm").Activate
dataFile = Cells(1, 1).Value
Set WB = Workbooks.Open(Filename:=dataFile, ReadOnly:=False)
'Open workbook from path
Worksheets("Master").Activate
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
y = 2
x = 2
Do While (y <= FinalRow)
Workbooks("ADAB1.xlsx").Activate
Worksheets("Bom").Activate
BomValue = Worksheets("Bom").Cells((x), 1).Value
MasterValue = Worksheets("Master").Cells((y), 1).Value
iFound = 0
If (BomValue = MasterValue) Then
Worksheets("Master").Activate
Worksheets("Bom").Activate
Dim Range As Range
Set Range = Worksheets("Bom").Range(Cells(x, 1), Cells(x, 4))
Worksheets("Master").Activate
Worksheets("Master").Range(Cells(y, 3), Cells(y, 6)) = Range.Value
iFound = 1
x = x + 1
y = y + 1
Else
y = y + 1
If (y = FinalRow) Then
x = x + 1
End If
End If
Loop
End Sub
壊れたときはエラーになりますか?また、単に 'Range()'と同じように 'Cells()'の前にワークシートを追加する必要があります。そうしないと、予期しない結果が得られます。 – BruceWayne
エラーは発生しませんが、検索/コピー処理全体が停止します。私はセルの感謝の前にワークシートを追加します。 –