私はフォームsheet3
からデータを取り出し、別のシートにデータを転送するコードを書いています。この部分はすべてOKです。 同様のクリックで、同じ書式のデータを見てください。sheet3
、Item's ID
(それは列Aにあります)、塗りつぶされた各行からsheet1
(列C)の一致が見つかります。次に、一致が存在する行を識別し、セル(列I)の減算を行うコード一致が検出されます。つまり、値をフォームsheet3
から取得します。それは列4にあります。次に - >行では一致が - >列になります。この値を使って減算します。sheet3
透明のために印刷画面が添付されています。は別のシートのデータを更新する必要があります。
Option Explicit
Sub Button4_Click()
Dim x As Long
Dim erow As Long
Dim y as Long
Dim roww as Long
Dim matchess as Integer
Dim IDitem as Integer
Dim myrange as Long
'Calculate starting rows
x = 15
With Worksheets("sheet2")
erow = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
End With
myrange = Worksheets("sheet1").Cells.Range("C:I")
With Worksheets("sheet3")
Do While .Cells(x, 1) <> ""
'The next line copies values to Sheet2
Worksheets("sheet2").Range("A" & erow & ":Z" & erow).Value = .Range("A" & x & ":Z" & x).Value
'increment row counters
x = x + 1
erow = erow + 1
Loop
End With
y = 15
With Worksheets("sheet1")
Do While Worksheets("sheet3").Cells(y, 1) <> ""
matchess = Worksheets("sheet3").Cells(y, 1)
IDitem = Application.WorksheetFunction.VLookup(matchess, myrange, 4, False)
roww = Application.Match(matches, myrange, 0)
.cell(roww, 7).Value = .cell(roww, 7).Value - IDitem
y = y + 1
Loop
End With
End Sub
私は理由を知りませんが、コードの第二部では動作しません。
追加情報:sheet3:行は15から始まり、マージ列AとBのアイテムID。マージ列 "S、T、U"の量。 sheet1:列Cの商品ID、列Iの在庫、
Guysは、私はこのような問題に対処するために、過去に.Find
方法を使用しているコード
(a)変数を宣言してください。 (b)あなたが(a)を確実に行うためには 'Option Explicit'を使います。 (c)「コードの2番目の部分はうまくいかない」と言っているが、何を意味するのかわからないので、Set IDItem行にタイプの不一致が表示されていると推測している。もしそうなら、そのステートメントから 'Set'を取り除いてください。 - VLookupはオブジェクトを返さないので、その(存在しない)オブジェクトを指すように変数を設定するのは不適切です。 – YowE3K
クリックしてもエラーが表示されず、転送以外に何も起こらないことを意味します。シート1の在庫は減少しません。私は変数を宣言しますが、私は何も起こらないと言いました。 –
(a)あなたの 'Do While Worksheheheets(" sheet3 ")。セル(x、1)<>" "'ステートメントは、このステートメントに達する前に、行xの列Aのセルが確実に ""になるように値を設定します。 (b)あなたの変数に 'myrange'、' matchess'、 'matches'、' IDitem'、 'roww'など私が見逃している変数を宣言しているコードのビットを質問に含めてください。 – YowE3K