プロが教える店舗&オフィスのセキュリティ対策術

初心者です。エクセルで「A1からA10まで書き終わったらA1を消してA2からA10を一つずつ上にずらす」
という動作をマクロでやりたいのですが教えてください

A 回答 (5件)

一例です。


A1:A10範囲で入力ある場合のみイベント発生、その範囲が全て入力済みなれば上方向にシフトします。
結局は何がしたいのだろう。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub
For Each a In Range("A1:A10")
If a = "" Then Exit Sub
Next
Range("A1").Delete Shift:=xlShiftUp
End Sub
    • good
    • 0
この回答へのお礼

いろいろやってみたらできましたみなさんありがとうございます
なんでできなかったんだろ・・

お礼日時:2010/10/24 17:58

A1からA10まで書くのは誰? 人間? マクロ?



A1からA10まで書き終わったかどうかは、どのようにして判断するの? 書き終わったのを人間が判断して、マクロをスタート?
    • good
    • 0

質問があいまい。

補足してください。
A11を指したら1つづつ繰上げ?
アクチブセルは何処に持っていくのか?
ーー
内容的に10データなのか、A10にデータが入れば、か?
ーー
10データが入ったとき、何かその10データですることがあるでしょう。
見てるだけではないでしょう?。そのことは何も書いてないが大丈夫ですか。
自動的に繰り上がって良いのでしょうか?
それによってはイベントプロシージュアーの種別が変わってくると思う。
安定的なのは、ボタンを1つ儲け、それをクリックした時に限り2行以下を1行づつ上に繰り上げるほうが良いと思うが。
ーーー
初心者のために、全体的なことが十分表現できてないようにおもう。そちらの方がコード習得より大切と思う。

この回答への補足

http://okwave.jp/qa/q6262955.html
↑これと組み合わせて最新のA10までのデータとしたいのです(データが多くなってしまうので)
下の方の方法でいろいろやってみましたが初心者過ぎてうまくできませんでした申し訳ないです
お願いします

補足日時:2010/10/22 17:27
    • good
    • 0

COUNT関数は数値の入力については有効ですが文字列も含まれる場合には適当ではありませんのでCOUNTA関数に変えたマクロにしてはどうでしょう。



Private Sub Worksheet_Change(ByVal Target As Range)

If Target = Range("A10") And Range("A10") <> "" And WorksheetFunction.Counta(Range("A1:A9")) = 9 Then
Range("A1").Delete Shift:=xlShiftUp
End If

End Sub
    • good
    • 0

次のようなマクロでどうでしょう。



Private Sub Worksheet_Change(ByVal Target As Range)

If Target = Range("A10") And Range("A10") <> "" And WorksheetFunction.Count(Range("A1:A9")) = 9 Then
Range("A1").Delete Shift:=xlShiftUp
End If

End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!