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