- ベストアンサー
vba 任意のセルから動作開始
os xp excel 03 流れですけれどマクロを組み立ててもらいたいのですが? 任意のセルにカーソルを置いて其処からの動作開始 例えば 任意のセル C2 にカーソルを置いて *A Selection.Copy ’ <---数字 Range("a65530").Select Selection.End(xlUp).Select '??? up の後一段 down しないと前の記録にかぶる為にdownさせたい。 '<--- ??? ActiveSheet.Paste Application.CutCopyMode = False '??? .Copyの完了後に元に(C2)に戻したい '<--- ??? **A *Aのマクロが終了したら セルが一段落ちて '<--- ??? *B もしもセルが空白だったら 次の列へ (C2から開始ですからD2へ) '<--- ??? *C もしも次の列のセルが空白だったら 終了 '<--- ??? *D *Aに戻る。 '<--- ???
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
myLine = Range("A65530").End(xlUp).Row とすれば myLine に最後の行数が入りますので それを +1 するなり、好きなように応用すれば良いのでは...
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
既出ご回答に、感動。完動といっているが 小生が問題を読むと、イベントと係わる問題ではないか? Sheet1のSelectionイベントに下記を貼り付け Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then MsgBox "A列以外を選択のこと" Else If Target.Cells.Count > 1 Then MsgBox "1セルのみ選択のこと" Else If Target = "" Then '空白 If Target.Offset(0, 1) = "" Then '空白+隣右空白=>何もしない Exit Sub Else '空白+右非空白=>隣右列コピー Target.Offset(0, 1).Copy Range("A65536").End(xlUp).Offset(1, 0) End If Else '非空白=>自身をコピー Target.Copy Range("A65536").End(xlUp).Offset(1, 0) End If End If End If End Sub こういうイメージでは無いか? A列以外をクリクすると、A列の最下行の次に追加していく。 空白の場合は右となりセルを追加する。 例データ A列は指定順序に関係するのでイメージだけ A列 B列 C列 D列 E列 1 2 3 2 2 ー 4 3 3 ー ー 5 2 4 ー 34 3 2 6 ー 41 3 ・・・ ーは空白セルを意味す。 ーーー テストは、A列を空白にして、B-E列データは例えば上記のように先に入力し、適当にセルをクリックしてA列の変化を見てください。 データを作るとき反応しては困るので VBE画面で実行ー中断状態にして、その後にシートにデータ入力し、入力し終わったら実行ーリセットでテストが始まる。そして任意のセルをクリックしてみる。
- mitarashi
- ベストアンサー率59% (574/965)
こんなことですか?理解が違っていたら悪しからず。 Sub test() Dim srcRange As Range, destRange As Range If TypeName(Selection) <> "Range" Then Exit Sub If Selection.Cells.Count > 1 Then Exit Sub Set srcRange = Selection Set destRange = Range("a65530").End(xlUp).Offset(1, 0) Do srcRange.Copy destRange Set srcRange = srcRange.Offset(0, 1) Set destRange = destRange.Offset(1, 0) Loop Until srcRange.Value = "" End Sub
お礼
感動、完動、お世話様でした。 100%完動でした またのであいぉ
お礼
北海道で遅く寒いなかで有難うございました。 自分のレベル=ラベルなもので理解するように保存します。