• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelマクロ等(通番自動付与・上書保存))

Excelマクロで共有の台帳に番号を自動振りする方法

このQ&Aのポイント
  • Excelの共有の台帳に複数のユーザーがデータを登録し、保存時に番号を自動振りする方法について質問があります。
  • マクロを使用して、新しいデータには保存済みの最大値+1の値を、既出のデータには前回の入力時と同じ番号を振りたいです。
  • マクロを実行すると、B列にデータを入力するとA列に番号が自動反映され、上書き保存される仕組みが理想です。

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

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

「(1)既出の場合」というのは「同一シート内で既出」のイミで良いんですかね。 手順: シート1のシート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim h as range  dim ha as range  dim r as long ’作業対象範囲の確認  set target = application.intersect(target, range("B:B"))  if target is nothing then exit sub  for each ha in target.areas  for each h in ha  ’消去の場合の処理   if h = "" then    h.offset(0, -1).clearcontents   else   ’実データを記入した場合の処理    r = application.match(h.value, range("B:B"), 0)    if r = h.row then    ’新規の場合     h.offset(0, -1) = application.max(worksheets("Sheet1").range("A:A"), worksheets("Sheet2").range("A:A"), worksheets("Sheet3").range("A:A")) + 1    else    ’既出の場合     h.offset(0, -1) = cells(r, "A").value    end if   end if  next  next end sub ファイルメニューからエクセルに戻る シート2のシート名タブを右クリックしてコードの表示を選び,現れたシートに同じマクロをコピー貼り付ける シート3のシート名タブを右クリックしてコードの表示を選び,現れたシートに同じマクロをコピー貼り付ける #シート数が実際には不定なので,最大値を採取する部分はご自分で工夫してみてください。 #シートの増減が頻繁にある場合は,応用としてworkbook_sheetchangeイベントについてネットを調べて工夫してください。

modmod
質問者

お礼

早速にありがとうございます。大変助かります。 試してみたところ、希望通りの番号付与が出来ました。 (「既出の場合」は、ご理解の通り”同一シート内”で大丈夫です。) シート数の増減は、今のところ考えなくて大丈夫そうなので、徐々に工夫していきたいと思います。 あと、分かりづらくて申し訳ありません。 A列に自動入力後に上書き保存までを組み込むには、 「ThisWorkbook.Save」などを「end sub」の前に加えれば問題無いでしょうか…? (共有で使用するため、競合してしまわないようにA列入力後に即保存したいのです。) 色々と聞いてしまい申し訳ありませんが、宜しくお願い致します。

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

関連するQ&A