[[20110922192554]] 『選択したセルが空白ならマクロ停止』(黒人) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『選択したセルが空白ならマクロ停止』(黒人)

OS:XP
EXCEL2003です

  A B
1 a a
2 c c
3 d
4 f
5
 
A列に手打ちしてあるデータがあります。
@一番上(a)をコピー。
A隣のB列に貼り付けます。
Bその後あるマクロを実行。
C@で選択したセル(a)の一つ下(c)が空白なら終了。
 この場合空白ではないのでコピーしてB列に貼り付け。
 
・・・といった動作を繰り返し、最終的にA列が空白のところまで行ったら
このマクロを終了したいのです。
 
条件付でマクロを繰り返し、終了するやり方を教えてください。


 @とAは、マクロ実行前の手作業だよね。
 で、@はA1を選択してCtrl/c かな。次にAでは、当然B1を選択してCtrl/vかな。
 このAを行ったとき、もう@の状態(A1が選択された状態)がどうだったか、誰もわからない。
 なので、Bここからマクロ実行して、Cで@のセルはどこだったのか判断できないよ。

 やるなら、Bでマクロ実行させる前に、まずA1を選択させる。で、マクロを開始。
 でも、この処理って、どんな意味があるんだろう?
 単純に、A列の値のあるセルの値をB列に転記というのならわかるけど・・・

 (ぶらっと)

 Sub 条件付でマクロを繰り返し()
    Dim r As Long
    r = 1
    Do While Cells(r,"A").Value <> ""
        Cells(r,"B").Value = Cells(r,"A").Value
        あるマクロ
        r = r + 1
    Loop
 End Sub
 Sub あるマクロ()
     MsgBox "中は秘密?"
 End Sub
 ってことでしょうか。
 (Mook)

@からCまですべてマクロで実行です。


 >@からCまですべてマクロで実行です。

 じゃぁ、Mookさんからお答えが出ているコードのなかの 「あるマクロ」を消せばできあがり。

 そのほかの方法としては、A列をコピーしてB1に貼り付ける、これをマクロ記録すれば以下のMacro1ができあがる。
 それを、少しブラッシュアップしたのがSample1。ある行から下は、たとえ値があってもコピーしたくないという
 要件じゃなければこれでもいい。 さらにSample2のような方法もある。いずれもループなし。

 Sub Macro1()
    Columns("A:A").Select
    Selection.Copy
    Range("B1").Select
    ActiveSheet.Paste
 End Sub

 Sub Sample1()
    Columns("A").Copy Range("B1")
 End Sub

 Sub Sample2()
    With Range("A1", Range("A1").End(xlDown))
        .Offset(, 1).Value = .Value
    End With
 End Sub

 (ぶらっと)

 B が何かを説明した方が良いのではないでしょうか。
 一回コピーするあとに何をしているのでしょう。
 ただコピーするだけなら、ぶらっとさんの Sample で済んでしまいます。
 (Mook)

 >一回コピーするあとに何をしているのでしょう。

 ですね。きっと。であれば、もう、Mookさんのコードそのものでいいわけで、以下は単に
 別の記述方法ということで、Mookさんのコードと基本的にかわらないけど。

 Sub Sample3()
    Dim c As Range

    For Each c In Range("A1", Range("A1").End(xlDown))
        If Len(c.Value) = 0 Then Exit For
        c.Offset(, 1).Value = c.Value
        'ここでなにかしらの処理をする。あるいは以下のように必要な情報を引数であたえて、サブプロシジャを実行する。
        Call サブマクロ(c.Offset(, 1))
    Next

 End Sub

 Private Sub サブマクロ(myR As Range)
    MsgBox "処理すべきセルは" & myR.Address & vbLf & "処理すべき値は" & myR.Value
 End Sub

 (ぶらっと)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.