これ何て呼びますか

入力シートから台帳に転記したくコードを作成しましたが、エラーの修正がわかりません。入力セルはM35からM40のセルで台帳の一連番号のそれぞれの行の小切手番号の所に、その都度転記したい野ですが、うまくいきません。教えて下さい。

「VBAコードのエラーを修正できません。」の質問画像

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

  • 追加コード1です。

    Public Sub 転記2()
    Dim sh3 As Worksheet
    Dim sh1 As Worksheet
    Dim maxrow As Long
    Dim row As Long
    Dim dicT As Object
    Dim key As Variant
    Set sh3 = Worksheets("台帳")
    Set sh1 = Worksheets("入力シート")
    Set dicT = CreateObject("Scripting.Dictionary")
    maxrow = sh3.Cells(Rows.Count, "M35:M40").End(xlUp).row ←この部分が黄色です。
    '小切手番号を記憶
    For row = 7 To maxrow
    key = sh3.Cells(row, "M35:M40").Value

      補足日時:2020/01/09 13:41
  • 追加コード2です。(続きです。)

    dicT(key) = row
    Next
    key = sh1.Cells("M35:M40").Value
    If dicT.exists(key) = False Then

    MsgBox ("小切手番号=" & key & "は台帳にありません")

    Exit Sub

    End If

    row = dicT(key)

    sh3.Cells(row, "V7:BU7").Value = sh1.Cells("M35:M40").Value '小切手番号

    MsgBox ("転記完了します")


    End Sub

      補足日時:2020/01/09 13:44

A 回答 (3件)

こんにちは



>←この部分が黄色です。
直接の原因は、Cellを指定するのにCells(row, column)形式を利用しているのに、column(=列番号など)であるはずのところに"M35:M40"なるセル範囲を意味する文字列が入っているためです。
ですので、エクセルは「なんのこっちゃ?」とエラーにしています。
 Cells(Rows.Count, "M")
とでもしておけば、そこの部分のエラーは回避できるでしょうが、ざっと見たところ全体的に何をどうしたいのかよくわかりません。
上記の部分にしても、その部分でM列の最終行を求めたいのかどうかも不明ですし・・・
他にも
 ・なぜDictionaryが必要なのか
 ・説明にないV7:BU7セルはいったい何なのか
などなど・・・
想像するところ、そのまま逐次修正を続けていっても、なさりたいことは実現できないのではないかと危惧します。

正しく修正をしたければ、関係するセルの正確な位置関係を示すことと、なさりたい事の全貌をきちんと説明(=第三者にわかるように)する必要がありそうです。
    • good
    • 0
この回答へのお礼

最も大事な台帳を画像画像添付できませんでした。何度も試したのですが無理の様です。ご指摘いただいたとおり、次の修正がでてきました。もう一度見直してみます。ご教授有り難う御座いました。

お礼日時:2020/01/09 16:15

maxrow = sh3.Cells(Rows.Count, "M35:M40").End(xlUp).row




maxrow = sh3.Range("M35:M40").Rows.Count
    • good
    • 0
この回答へのお礼

有り難う御座いました。次の修正がでました。もう一度良く見直して見ます。

お礼日時:2020/01/09 16:15

>>コードを作成しましたが



で、それは何処???
    • good
    • 0
この回答へのお礼

有り難う御座いました。添付の手順が前後になりご迷惑をおかけしました。

お礼日時:2020/01/09 16:15

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