このコードを使用して、あるシートから別のシートにデータを転送しています。このコードでは、転送されるデータが削除されるまで新しいシートに留まることができます。値が見つからない場合はvbaコードを終了
Private Sub Transfer2_Click()
Dim Work_Order1 As String, Qty1 As Integer, Frame1 As String, Qty_Frame1 As Integer
Worksheets("Work_Order").Select
if Worksheets("Work_Order").Range("C12") = "" Then Exit Sub
Work_Order1 = Range("N3")
Qty1 = Range("B3")
Frame1 = Range("C12").Value
Qty_Frame1 = Range("M12")
Worksheets("Order").Select
Worksheets("Order").Range("A4").Select
If Worksheets("Order").Range("A4").Offset(1, 0) <> "" Then
Worksheets("Order").Range("A4").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Work_Order1
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Qty1
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Frame1
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Qty_Frame1
Private Sub Transfer2_Click()
Dim Work_Order2 As String, Qty2 As Integer, Frame2 As String, Qty_Frame2 As Integer
Worksheets("Work_Order").Select
if Worksheets("Work_Order").Range("C13") = "" Then Exit Sub
Work_Order2 = Range("N3")
Qty2 = Range("B3")
Frame2 = Range("C13").Value
Qty_Frame2 = Range("M13")
Worksheets("Order").Select
Worksheets("Order").Range("A4").Select
If Worksheets("Order").Range("A4").Offset(1, 0) <> "" Then
Worksheets("Order").Range("A4").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Work_Order2
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Qty2
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Frame2
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Qty_Frame2
Private Sub Transfer2_Click()
Dim Work_Order3 As String, Qty3 As Integer, Frame3 As String, Qty_Frame3 As Integer
Worksheets("Work_Order").Select
if Worksheets("Work_Order").Range("C14") = "" Then Exit Sub
Work_Order1 = Range("N3")
Qty3 = Range("B3")
Frame3 = Range("C14").Value
Qty_Frame3 = Range("M14")
Worksheets("Order").Select
Worksheets("Order").Range("A4").Select
If Worksheets("Order").Range("A4").Offset(1, 0) <> "" Then
Worksheets("Order").Range("A4").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Work_Order3
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Qty3
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Frame3
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Qty_Frame3
私がやっていることは、 "C"の範囲に値が見つからないということです。このコードは9回繰り返されています。これは、この情報が見つかる9つのインスタンスが存在するためですが、すべてが常に値を持つわけではないためです。それが発生した場合は、情報を新しいシートに転送する前にコードを終了します。
if Worksheets("Work_Order").Range("C12")="" Then
Exit sub
をしかし、もしあれば、それは終了せず、エラーブロックを返します。
はこれまでのところ、私は試してみました。 If
に別の行にExit Sub
を置くことによって
ありがとうございます。私はそれを1行のステートメントにし、データをコピーする前にその範囲をチェックするために残りのコードでそれを変更しました。 –
これは素晴らしいことでしたが、そのステートメントを完全にスキップして次のステートメントに進む場合はどうすればよいですか?私はセルの値が0に等しい場合に "エラー再開時に次へ"を入れてみましたが、それでも0を入力して次のステートメントに進みます。私は何も入力したくない、基本的にそのステートメントをスキップし、次のステートメントに移ります。 –
@AshleyGoodwinどのステートメントをスキップしようとしていますか?どんな状況ですか? (特定の状況で文をスキップする通常の方法は、それらを 'If'ブロックで囲むことです。'何かが真であれば' '何かをする' '何かをする' '終わりの場合' 'もし何かが真ならば' '何かをする' '何かをする' 'それ以外は' 'テストがそうでないときに何かするTrue) 'End If'。 – YowE3K