• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで検索後、行番号取得し上書き保存)

VBAで検索後、行番号取得し上書き保存

このQ&Aのポイント
  • Excel2002のVBAを使用して、検索後の行番号を取得し、その行にデータを上書き保存する方法を教えてください。
  • 入力シートと一覧シートを作成し、入力シートの入力フォームにデータを入力すると、一覧シートの最終行に新規でデータが転記されます。また、入力シートでカタカナ検索を行うと、該当するデータを入力フォームに表示し、そのデータがある行番号をA1セルに取得することができます。
  • しかし、上記の方法ではデータを2行下に上書きしてしまいます。データを上書きする行番号と同じ行にデータを上書きするためには、どのような方法を取ればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

遅くなったので、もう解決済みかな? Sub 修正して上書き() Dim no As Long, motoHani(), i As Integer no = Range("A1")-2  'ここで-2とするか   ・   ・ For i = 0 To UBound(motoHani) '↓ここで-2にするか .Cells(no-2, i + 1) Range("顧客情報").Cells(no, i + 1) = Range(motoHani(i)).Value Next MsgBox "修正しました。" End Sub ではダメですか

chibi1971
質問者

お礼

Range("顧客情報").Cells(no - 2, i + 1) = Range(motoHani(i)).Value で出来ました! ありがとうございました。 自分でも-2は同じように入れてみたのですが、エラーになってしまったので諦めていました。何かが違ったのかも・・・ 本当に助かりました。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

Sub 修正して上書き() Dim no As Long, motoHani(), i As Integer no = Range("A1") motoHani = Array("D4", "C6", "I6", "C7", "J7", "C8", "C9", "C10", "H10", "C11", "I11", "C12", "E12", "H12", "J12", "C14", "C13", "E13", "H13", "J13", "C15", "C16") For i = 0 To UBound(motoHani) 'Range("顧客情報").Cells(no, i + 1) = Range(motoHani(i)).Value     '元のコード Cells(no, i + 1) = Range(motoHani(i)).Value    '修正後のコード Next MsgBox "修正しました。" End Sub ここまで作れるのであれば、コードの修正個所を見れば解るかな、と思いますが 解説が必要ですか?

chibi1971
質問者

補足

早速回答いだいてありがとうございます。VBAは本や資料を見ながら勉強し、何とかここまでたどり着いた感じなのです。  質問内容に言葉が足りませんでした。 実は、「入力」というシートの入力フォームで検索。別の「一覧」というシートのセル範囲に"顧客情報"という名前を付けています。 Sub セル範囲に名前を付ける() Dim myName As String, myRng As Range myName = "顧客情報" Set myRng = Worksheets("一覧").Range("B3:W65536") ThisWorkbook.Names.Add myName, myRng End Sub 「入力」シートのA1に検索結果の「一覧」シートの行番号を取得して、「一覧」シート顧客情報に上書きをしたいのです。 たぶん、"顧客情報"はB3から最終行まで指定しているので、行番号を取得し、上書きした際に2こずれてしまうと思います。(さっき気が付きました。) ただ、上記のRange("B3:W65536")を(B1:W65536)にすると他に不具合が出てしまいます。 もう、考えがまとまらず戸惑っています。どうか教えてください。

関連するQ&A