ここから質問投稿すると、最大10000ポイント当たる!!!! >>

誠にすみませんが おねがいします。
エクセルで注文書と入荷の受入処理を行いたくマクロを作ってます。
途中 みなさんからお聞きしたマクロ文を参考にしてます。
注文書発行後そのデータをT_注文シートに最終行を確認して貼り付けます。
受入処理はそのT_注文シートの項目の注文番号を指定して
T_受入処理シートに張ります。ここで 受入の諸事項を記入して再度、
T_注文シートにID番号で完全一致させ上書きさせたいと考えてます。
しかし、下記のマクロだと途中の
'既存データの修正
x.PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
で デバックしてとまります。ローカルウィンドで確認したら
xはNothingでした。
なぜでしょうか?教えてください。
マクロの全文です。

Sub 受入処理()
Dim z As Long '[T_注文]シートの最終行番号
Dim x As Range '検索したセル

'画面を固定
Application.ScreenUpdating = False

If Range("T_受入処理!C21").Value = "" Then
MsgBox "受入有無が未記入です。確認してからこの処理をおこなってください。", vbOKOnly, "オービットベース データ有無確認"
Exit Sub
End If
If Range("T_受入処理!C22").Value = "" Then
MsgBox "受入日が未記入です。確認してからこの処理をおこなってください。", vbOKOnly, "オービットベース データ有無確認"
Exit Sub
End If
If Range("T_受入処理!C23").Value = "" Then
MsgBox "受入数が未記入です。確認してからこの処理をおこなってください。", vbOKOnly, "オービットベース データ有無確認"
Exit Sub
End If
If Range("T_受入処理!C24").Value = "" Then
MsgBox "受入単価が未記入です。確認してからこの処理をおこなってください。", vbOKOnly, "オービットベース データ有無確認"
Exit Sub
End If
'入力したデータをコピー
Range("c5:c24").Copy

'[T_注文]シートを選択
Sheets("T_注文").Select

'最終行番号を取得
z = Range("a1").End(xlDown).Row

'[番号]を検索(ここをみなさんから教えていただきました。)
Set x = Range("a2:a" & z).Find(What:=Range("T_受入処理!c5").Value, _
LookIn:=xlValues, _
LookAt:=xlWhole)

'既存データの修正
x.PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True

'コピーモードを解除
Application.CutCopyMode = False
MsgBox "この品目の受入処理を完了しました。", vbOKOnly, "オービットベース:受入処理完了"

'[入力]シートを選択
Sheets("T_受入処理").Select

'画面の固定を解除
Application.ScreenUpdating = True

このQ&Aに関連する最新のQ&A

A 回答 (3件)

先ず、注文シートの最終行がちゃんと取得されてるかどうか確認すべきでしょう。



'--------------------------------------------
'最終行番号を取得
z = Range("a1").End(xlDown).Row

  MsgBox z   '●最終行取得の確認!

'[番号]を検索(ここをみなさんから教えていただきました。)
'-------------------------------------------------------

それから、
x.PasteSpecial の引数Transposeが、Trueになっているのはなぜ?

こういう類の質問の場合は、質問の文言で受取り方が大分変るので
ちゃんと各シートのレイアウトを提示すべきかと。
さすれば、即解決でせう。(^^;;;
以上。

 
    • good
    • 0

Set x = Range("a2:a" & z).Find(What:=Range("T_受入処理!c5").Value, _


LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns) '←追加
検索する方向を指定してみるとか。
    • good
    • 0

例えばID番号を表示形式で頭に”0”とかつくようにしている、


と言う事はないですか?
    • good
    • 0
この回答へのお礼

有難うございます。
表示形式は数値にしてあります。

お礼日時:2008/07/22 11:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング