- ベストアンサー
エクセルのマクロで番号を入力する方法
- エクセルのマクロを使用して、簡単に番号を入力する方法を紹介します。
- マクロを組むことで、ボタンを押すたびに自動的に番号が増えていく仕組みを作ることができます。
- 具体的なコードの例も記載していますので、参考にしてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>今回のようにA2からや >A3から記録できるようにするにはどこを直せばいいのでしょうか? ただし、最初使用時、1が入っていいない列の先頭には、文字列か空白という条件にならないと、誤動作するはずです。 >おすすめの参考書などがありましたら一緒に教えていただければ嬉しいです。 書籍については、 大村あつしさんの『かんたんプログラミング Excel VBA』基礎編から始めると良いです。 http://www.amazon.co.jp/exec/obidos/ASIN/4774148695 上記を含めて、三部作になっていますが、だいたい、1冊1ヶ月のスピードで進めると良いと思います。この本が大ざっぱでも、入力をしながら体験できれば、3ヶ月でひと通り出来るようになりますし、VBA上で分からないことは、ほとんどなくなります。反面、細かいことも書いてありますが、それらは最初無視して構わないです。10数万円の専門のスクールに行くよりも価値があります。私は、この本に出会わなかったら、決して、上達しなかったと思います。 '// Sub Macro4r() Dim i As Long Const START As String = "A3" 'ここで書き換える Worksheets("入力").Activate If Worksheets("データ").Cells(Rows.Count, 1).Value <> "" Then MsgBox "データが一杯です", vbExclamation Exit Sub End If With Worksheets("データ").Cells(Rows.Count, 1).End(xlUp) If VarType(.Value) <> vbDouble Then i = 1: Worksheets("データ").Range(START).Value = i Else i = .Value + 1 .Offset(1).Value = i End If MsgBox "次の受付番号→ " & i .Range("B2").Value = i End With Cells(2, 2).Value = i End Sub
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7941)
>データシートを6万件以上蓄積するのであれば そういう使い方をすると、真面目に考えて質問しているのですか? それならもっとややこしくして sub macro1r1() worksheets("データ").cells(rows.count, "A").end(xlup).offset(1).formular1c1 = "=SUM(R[-1]C,1)" worksheets("入力").range("B2").value = worksheets("データ").cells(rows.count, "A").end(xlup).value end sub とでもしておきます。 何も考えてないけど思い付きでちょっと聞いてみただけなら、余計な事をお話ししちゃいましたね。ごめんなさい。
お礼
ご回答ありがとうございます。 6万件以上にはならないと思います…。すみません…。 マクロをやり始めたら面白くて興味があっただけなのです…。
- WindFaller
- ベストアンサー率57% (465/803)
#2の回答者です。 >データシートのA2から記録をつける場合はどこをどう直せばいいのでしょうか? 失礼しました。そういう目的だと思わなかったのですから。 こちらのコードは、ワークシートの最終行までを入れられますが、一杯になった時は、メッセージが出ます。 ただ、まだご質問の意図する所が分かっていないかもしれません。 '// Sub Macro4() Dim i As Long Worksheets("入力").Activate '入力シートをアクティブ If Worksheets("データ").Cells(Rows.Count, 1).Value <> "" Then MsgBox "データが一杯です", vbExclamation Exit Sub End If With Worksheets("データ").Cells(Rows.Count, 1).End(xlUp) If .Value = "" Then i = 1: .Offset(1).Value = i Else i = .Offset(1).Row - 1 .Offset(1).Value = i End If MsgBox "次の受付番号→ " & i .Range("B2").Value = i End With Cells(2, 2).Value = i End Sub
お礼
ありがとうございます! 先ほど入れてみたところ、無事にできました! ワークシートの最終業までいれるということはおそらくないと思います。 申し込み表を一覧表にして記録しようと思ったのです。 今回はデータシートのA2から記録できればよかったのですが、今回のようにA2からやA3から記録できるようにするにはどこを直せばいいのでしょうか? マクロは始めたばかりでよくわからなくて…。 おすすめの参考書などがありましたら一緒に教えていただければ嬉しいです。
- WindFaller
- ベストアンサー率57% (465/803)
>ボタンを押すと「1」「2」「3」…と入力できるようにしたいのですが、 これは、データシートのA1から記録をつけ始めるようにしたものです。 '// Sub Macro4r() Dim i As Long Worksheets("入力").Activate '入力シートをアクティブ With Worksheets("データ").Cells(Rows.Count, 1).End(xlUp) If .Value = "" Then i = 1: .Value = i Else i = .Offset(1).Row .Offset(1).Value = i End If MsgBox "次の受付番号→ " & i End With Cells(2, 2).Value = i End Sub 容易に数字を変えられないようにするためには、別に、カスタムドキュメント・プロパティを使う方法もあります。
お礼
ご回答ありがとうございます。 ボタンを押すと「1」「2」「3」…となったのですが、 データシートのA2から記録をつける場合はどこをどう直せばいいのでしょうか?
- keithin
- ベストアンサー率66% (5278/7941)
ALT+F11を押す 挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1() worksheets("データ").range("A65536").end(xlup).offset(1).formular1c1 = "=SUM(R[-1]C,1)" worksheets("入力").range("B2").value = worksheets("データ").range("A65536").end(xlup).value end sub ファイルメニューから終了してエクセルに戻る シートにオートシェイプの図形を1個配置、右クリックしてマクロの登録で今登録したマクロを取り付ける。 #参考 データシートに6万件をもっと超える多数のデータを蓄積するホントに予定があるなら、「A65536」の部分はもちろんずっと沢山下から開始します。
お礼
ご回答ありがとうございます。 試して見たところ無事にできました。 データシートを6万件以上蓄積するのであれば、A65536の部分をA70000などにすればいいのでしょうか?
お礼
何度も回答ありがとうございます。 まだ始めたばかりでわからないことが多く、何をどう変えればいいのか、うまく動作しないのはどうしてなのかもわからない状態です。 教えて頂いた本を参考にしながら、試行錯誤して勉強していきたいと思います。