質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

3回答

1804閲覧

エクセルVBA_選択セルに連番入力したい

yoshinorikluger

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/07/02 02:25

編集2021/07/02 02:33

前提・実現したいこと

エクセルVBAにて結合されているセルを選択して、セル内の値の前に連番を付与したいと思っています。

発生している問題・エラーメッセージ

結合されているセルが列方向に2個結合されているセルを 行方向に3個選択します。 コードを実行すると下記のように入力されてしまいます。  元セル 〇      △      ×  実行後 1 〇      3 △      5 × 連番で入力されるようにするには、どのように改修よいのでしょうか? 離れたセルを選択した場合にも対応できるようにしたい。 ご教示お願いします。

該当のソースコード

  Sub 選択セル連番入力()
Dim i As Long: i = 1
Dim セル As range
For Each セル In Selection

If セル.Value = "" Then セル.Value = i Else セル.Value = i & " " & セル.Value End If i = i + 1 Next

End Sub

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

こんな感じでどうでしょうか。

VBA

1Sub 選択セル連番入力() 2 Dim i As Long: i = 1 3 Dim セル As Range 4 For Each セル In Selection 5 If セル.MergeArea.Cells(1, 1).Address = セル.Address Then 6 If セル.Value = "" Then 7 セル.Value = i 8 Else 9 セル.Value = i & " " & セル.Value 10 End If 11 i = i + 1 12 End If 13 Next 14End Sub

投稿2021/07/02 02:39

jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshinorikluger

2021/07/02 04:01

ありがとうございます。大変助かりました。 VBAを勉強初めてから、コード入力してはエラーばかりで、 まだまだ理解できていないことも多く苦労しています。 即座に回答いただきありがとうございます。
guest

0

ちゃんとした回答が出てるので取り消し

投稿2021/07/02 02:40

編集2021/07/02 02:43
neconekocat

総合スコア443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshinorikluger

2021/07/02 02:52

ありがとうございます。 大変、助かりました。 もっと勉強していきます。 また、悩むことがあれば、お助け宜しくお願いします。
guest

0

こんな感じですかね。

VBA

1Sub 選択セル連番入力() 2 Dim firstRow As Long 3 Dim セル As range 4 For Each セル In Selection 5 if firstRow = 0 then firstRow = セル.Row 6 セル.Value = (セル.row - firstRow + 1) & " " & セル.Value 7 Next 8End Sub

投稿2021/07/02 02:35

ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshinorikluger

2021/07/02 02:42

素晴らしい、不勉強を痛感いたします、早急な回答に感謝いたします。 実は離れたセルを選択した場合にも対応したいと思っております。 質問内容を修正いたしました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問