こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

選択した行のみマクロを使いたい

以前、こちらのサイトで表を展開するマクロを教えていただきました。
そのマクロをシート全体ではなく、任意の行や任意のセルにだけに使えるようにしたいです。
Sub 展開()
Dim nLast As Long
Dim vAdata, i, j
Dim vData
nLast = Cells(Rows.Count, 1).End(xlUp).Row
'行を追加削除する時は下から上が基本
For i = nLast To 1 Step -1
vAdata = Cells(i, 1)
'A列が空白ではなく、B列が空白の場合、B列以降を上と同じにする
If (vAdata <> "") And (Cells(i, 2) = "") And (i > 1) Then
Rows(i) = Rows(Cells(i, 2).End(xlUp).Row).Value
Cells(i, 1) = vAdata
End If

If vAdata = "" Then
'A列の値が空白なら削除
Rows(i).Delete Shift:=xlUp
Else
'A列の最後に「,」が有る場合は取り除く
If Right(vAdata, 1) = "," Then
vAdata = Left(vAdata, Len(vAdata) - 1)
End If

vData = Split(vAdata, ",")
'A列の値がカンマで区切られていた場合
If UBound(vData) > 0 Then
'対象行をコピーして区切られていた数-1だけ下に挿入
Rows(i).Copy
Rows(i & ":" & i + UBound(vData) - 1).Insert Shift:=xlDown
'A列の値を区切られていた値に書き換える
For j = 0 To UBound(vData)
Cells(i + j, 1) = vData(j)
Next j
End If
End If
Next i
End Sub
というマクロを教えて頂きました。
これをどのようにすればいいでしょうか?
ご教授お願いします。

投稿日時 - 2011-09-07 10:23:17

QNo.6995017

困ってます

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

「任意」とは,具体的にどういう具合にエクセルに指示したい(マクロがアナタのしたいことを理解できるやり方で)のですか?


例:
任意のセル範囲をヒトカタマリ選んで実行する。

変更前:
For i = nLast To 1 Step -1

変更後:
for i = selection.areas(1).row + selection.areas(1).rows.count -1 to selection.areas(1).row step -1

投稿日時 - 2011-09-07 22:17:04

お礼

回答ありがとうございます。
私の言った任意とは、おっしゃられた
「任意のセル範囲をヒトカタマリ選んで実行する。」
または、
「行番号をクリック、ドラッグして選択実行する。」
ということでした。
説明足らずで申し訳ないです。
ありがとうございました。

投稿日時 - 2011-09-08 09:13:19

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問