アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。私はexcel VBA初心者です。納品書の雛形から納品台帳シートへの自動転記はうまくいったのですが、どうしても納品書の雛形から納品書別請求金額シートへの転記ができません。
excelbookのシート1には納品書の雛形、シート2は納品台帳、シート3は納品書別請求金額シートです。
シート1はセルA3,A5,A7,A9,A11にそれぞれ伝票種別、伝票番号1、伝票番号2、日付、取引先を、そして、A13:E24には商品名、個数、売価、金額、部門を、そして、D25には合計を入力するようになっています。
シート2はA2:K2から伝票種別、伝票番号1、伝票番号2、日付、取引先、商品名、個数、売価、金額、部門、入金日を入力します。
シート3はA2:G2から伝票種別、伝票種別、伝票番号1、伝票番号2、日付、取引先、合計金額、入金日を入力します。
なお、転記するときに、コマンドボタンで転記するようにしました。
そして、転記が終わったら、消すようにしました。

Private Sub CommandButton1_Click()
Dim wst1 As Worksheet
Dim wst2 As Worksheet


Set wst1 = ThisWorkbook.Worksheets("納品書マスター")
Set wst2 = ThisWorkbook.Worksheets("納品台帳")


For i = 13 To 24
If wst1.Range("A" & i) <> "" And Not IsNull(wst1.Range("A" & i)) Then
myRow = wst2.Cells(Rows.Count, 1).End(xlUp).Row + 1


wst2.Range("A" & myRow) = wst1.Range("A3")
wst2.Range("B" & myRow) = wst1.Range("A5")
wst2.Range("C" & myRow) = wst1.Range("A7")
wst2.Range("D" & myRow) = wst1.Range("A9")
wst2.Range("E" & myRow) = wst1.Range("A11")

wst2.Range("F" & myRow) = wst1.Range("A" & i)
wst2.Range("G" & myRow) = wst1.Range("B" & i)
wst2.Range("H" & myRow) = wst1.Range("C" & i)
wst2.Range("I" & myRow) = wst1.Range("D" & i)
wst2.Range("J" & myRow) = wst1.Range("E" & i)

End If
Next i

wst1.Range("A7").ClearContents
wst1.Range("A9").ClearContents
wst1.Range("A11").ClearContents
wst1.Range("A13:E24").ClearContents
wst1.Range("D25").ClearContents

End Sub
この記述の中にどのような記述をしたら、シート3への転記ができるのかを教えて下さい。
できない場合、ほかに方法があったら教えて下さい。
また、できましたら、シート3の入金日を入力すると、シート2の対応する伝票種別の伝票番号の入金日を自動でリンクさせる方法はないでしょうか?よろしくお願いします。

質問者からの補足コメント

  • つらい・・・

    「アプリケーション定義またはオブジェクト定義のエラーです」が表示されるだけで、その表示の中にデバックするボタンもなければエラーが起こっている場所もわかりません。変更したコードの一部は「お礼」の欄に掲載したとおりです。
    ほぼ、お手上げ状態です。どなたか、助けてください。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/10/05 10:42

A 回答 (2件)

NO,1です。


>「アプリケーション定義またはオブジェクト定義のエラーです」が表示されて、うまくいきませんでした
具体的にどのようなコードにされて
どこでエラーが出ているのか
提示して頂かないと前に進めないと思います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

失礼しました。変更したコードを記入していませんでしたね。
では、早速、文字数に制限があるので途中から記述します。
End If
Next i

Dim wst3 As Worksheet

Set wst3 = ThisWorkbook.Worksheets("納品請求書別金額")

wst3.Range("A" & myrow) = wst1.Range("A3")
wst3.Range("B" & myrow) = wst1.Range("A5")
wst3.Range("C" & myrow) = wst1.Range("A7")
wst3.Range("D" & myrow) = wst1.Range("A9")
wst3.Range("E" & myrow) = wst1.Range("A11")
wst3.Range("F" & myrow) = wst1.Range("D25")


wst1.Range("A7").ClearContents
wst1.Range("A9").ClearContents
wst1.Range("A11").ClearContents
wst1.Range("A13:E24").ClearContents
wst1.Range("D25").ClearContents

End Sub

このように変更しました。こういうふうに変更してくださいということではなかったですか?
なお、私は記述のとおりVBA初心者ですので、このコードも専門書やネット等で調べながら記述したものです。
ですから、これから先がわからないのです。お手数かけてすみません。よろしくお願いします。

お礼日時:2015/10/04 23:49

>この記述の中にどのような記述をしたら、シート3への転記ができるのかを教えて下さい。


ここまで出来ているのであれば
End If
Next i
ここの部分に
wst1.Range("A7").ClearContents
wst1.Range("A9").ClearContents

Dim wst3 As Worksheet
Set wst3= ThisWorkbook.Worksheets("納品書別請求金額")
myRow = wst3.Cells(Rows.Count, 1).End(xlUp).Row + 1
wst3.Range("A" & myRow) = wst1.Range("A3")
wst3.Range("B" & myRow) = wst1.Range("A5")
・・・
と云った具合で出来ると思いますが

>シート3の入金日を入力すると、シート2の対応する伝票種別の伝票番号の入金日を自動でリンクさせる方法
通常であれば、Vlookup関数を配置しますが
伝票単位で入金を管理しているのであれば、品名ごとに入金日の列が必要なのでしょうか?
    • good
    • 0
この回答へのお礼

hallo-2007さん、ご回答ありがとうございます。早速、その方法で試したのですが、「アプリケーション定義またはオブジェクト定義のエラーです」が表示されて、うまくいきませんでした。なお、エクセルの操作があまり得意でない従業員が操作することを前提に作ろうと思っているので、「VBAならできるかも」が投稿のきっかけでした。でも、早速のご回答ありがとうございました。

お礼日時:2015/10/04 06:55

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