0

これまでのところ、私が持っているコードは、POジェネレーターで元の注文を受け取り、それをPOログにコピーします。これは、新しい注文である限り問題ありません。以前の注文を更新する必要があるときに問題が発生します。元の注文を見つけて、refセルを更新してほしい。助けてください....Excel2003

Sub Get_Po()
'
' Get_Po Macro
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim dest As Range

Set ws1 = Sheets("PO GENERATOR")
Set ws2 = Sheets("PO LOG")
Set dest = ws2.Range("a1").End(xlDown).Offset(1)


Sheets("PO GENERATOR").Select
Selection.AutoFilter Field:=3, Criteria1:="<>"
ws1.Range("2:5135").Copy
dest.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Sheets("Type II Log").Select


End Sub 
4

1 に答える 1

0

動作するはずのコードを次に示します。私はそれをテストしました、そしてそれはあなたが探していることをします。注意すべきいくつかの重要なポイントは次のとおりです。PO ジェネレーターが開始する行と列、および PO ログ情報が開始する行と列。

    Dim a As String
Dim lastRow As String

lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
'   Variable for PO#
a = Sheets("PO GENERATOR").Range("A1").Value

Sheets("PO GENERATOR").Select
'   Adjust to whatever row your PO is located
Rows(1).Select
Selection.Copy
Sheets("PO LOG").Select

'   Modify the Columns(1) to whatever column number your PO# is located
'   Search For PO number
Dim cellrow As Integer
    On Error Resume Next
    rng1 = a
    strSearch = rng1
        Set aCell = Sheets("PO LOG").Columns(1).Find(What:=strSearch, LookIn:=xlValues, _
                                    LookAt:=xlWhole, SearchOrder:=xlByRows, _
                                    SearchDirection:=xlNext, MatchCase:=False, _
                                    SearchFormat:=False)

        MsgBox aCell & vbCrLf & aCell.Row
        cellrow = aCell.Row

'   Modify Range("A") to whatever column you PO is located
If cellrow = 0 Then
Range("A" & lastRow).Select
Selection.PasteSpecial
    Else:
        Rows(cellrow).EntireRow.Select
        Selection.PasteSpecial
End If

幸運を!!!

于 2012-11-29T21:29:38.413 に答える