• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 重複する番号があるときは値を貼り付けない)

VBA で重複する番号があるときは値を貼り付けない

このQ&Aのポイント
  • VBAを使用して、重複する番号がある場合には値を貼り付けない方法について質問しています。
  • 具体的には、登録シートのセルA2の値が顧客情報シートのB列のどこかに既に存在している場合は、値を貼り付けずに販売情報シートに値を貼り付けたいとしています。
  • また、各シートに入力した値を貼り付ける際に、A2より下の行に順番に連番をつけたいという要望もあります。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

初心者さんが一番によくやる失敗ですが、rowなどの予約語を変数に使っては絶対にいけません。 >既に入力がされていた場合は…作業へと進めたい。 「あるか無いか」if文で検査して、無ければスキップするだけです >連番を付けたい 今のあなたのマクロから、各シートには「2行目からデータを詰めて転記していく」ことが前提になっています。 なのでふつーに行番号-1が連番です 作成例: private sub CommandButton1_Click() dim LastRow as long ’注意 if application.countif(worksheets("顧客情報").range("B:B"), range("A2").value) = 0 then lastrow = worksheets("顧客情報").cells(rows.count, "B").end(xlup).row + 1 worksheets("顧客情報").cells(lastrow, "A").value = lastrow - 1 Sheets("顧客情報").Cells(lastrow, 2).Value = Range("A2").Value Sheets("顧客情報").Cells(lastrow, 3).Value = Range("A5").Value Sheets("顧客情報").Cells(lastrow, 4).Value = Range("B8").Value end if lastrow = worksheets("販売情報").range("B65536").end(xlup).row + 1 worksheets("販売情報").cells(lastrow, "A") = lastrow - 1 Sheets("販売情報").Cells(lastrow, 2).Value = Range("C26").Value Sheets("販売情報").Cells(lastrow, 3).Value = Range("J1").Value lastrow = worksheets("売り上げ").cells(rows.count, 2).end(xlup).offset(1).row worksheets("売り上げ").cells(lastrow, 1) = lastrow - 1 Sheets("売り上げ").Cells(lastrow, 2).Value = Range("H1").Value Sheets("売り上げ").Cells(lastrow, 3).Value = Range("K6").Value end sub >と言われるでしょうが、…上記でした。。 色々手を入れて見やすくする等、工夫の余地が沢山あるマクロですが、とにかく一切余計な事をしてくれるなという意味ですよね。

riorin_08
質問者

お礼

ありがとうございます!! いろいろと何度かやっているうちに、よくわからず動かなくなることが多く、 情けないことに、唯一、数十回別のバージョンやらアレンジやら加えて修正が可能だったのです。 >一切余計な事をしてくれるな  ではなく、  「本気でわからないので、高度なことを教えていただいても、   理解できずお手間取らせるだけになっちゃいます。   ごめんなさい」っっと言う意味です。すみません。 構文をまとめたり、いろいろやったことはあるのですが、余計袋小路で。。。 必要に駆られて仕事の事務作業で使っているので、  使いたいマクロはいつもほぼ同じで、マクロをあまりじっくり勉強しておらず、 お手数おかけしました。 助かりました。 ありがとうございました

すると、全ての回答が全文表示されます。

関連するQ&A