EXCELについての質問です。マクロを使ってセルの移動をさせたいと考えています。
まず使うデータ範囲はA1:E11です。A1:E10にはデータが入っています。
ちなみに、A列には名前、B~E列には数字が入っており、A11:E11は合計が表示される設定しており、合計の場所はここに固定させたいのです。
その移動のさせ方ですが、
A1:E1に空欄があるとします。
そのときに、マクロを再生させるとA2:E10のセルに入っているデータ(値のみ)を上に移動させたいのです。
さらに、A3:E3の内容を消して空欄が出来たとします。
その時に同じ操作によってA4:E10のデータを上に移動させたいのです。
前者のマクロを単純に作ると縦に9つ分のセルを移動させるマクロでは、
A11:E11も上に移動させられてしまいます。なので、移動させるセルの一番下が10行目になるようなマクロを作りたいのです。
何がしたいのかといいますと、いらないデータを消した時に空欄をマクロで詰めてしまいたいのです。
乱文で判りづらいかと思いますが、知識のある方教えていただけないでしょうか。
よろしくお願い致します。
No.1
- 回答日時:
そのようなマクロを作ってみました。
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。
でもA1:E10が「例えば」の例でなければ良いのですが。もし違うならそれなりに手を入れないとダメですよ。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim idx As Integer
Dim rng As Range
Set rng = Intersect(Target, Rows("1:10"))
If Not rng Is Nothing Then
On Error GoTo err0
Application.EnableEvents = False
For idx = 10 To 1 Step -1
If Application.CountA(Cells(idx, "A").Resize(1, 5)) = 0 Then
Cells(idx + 1, "A").Resize(11 - idx, 5).Copy Cells(idx, "A")
Cells(10, "A").Resize(1, 5).ClearContents
End If
Next idx
End If
err0:
Application.EnableEvents = True
End Sub
この回答への補足
あと、もう一つお尋ねしたいのがコピーした際に、罫線も一緒に移動するのですが、罫線等の書式はそのままで値のみ移動させることは可能なのでしょうか?たとえ無理だとしてもこんなことが出来るなんて…zap35さんをリスペクトです☆
補足日時:2007/11/05 09:51早速の回答ありがとうございます!!
実際に行の値を消した時に下の値が動いたときはびっくりして思わず声が出てしまいましたw
今回、合計行がA1:E10にしておりますが、もし、合計行がもっと下に来た場合はどの値を変えればよいのでしょうか?いろんなサイズで使えたらと思いますので是非教えていただきたいです。m(_ _)m
No.2
- 回答日時:
#01です
マクロを貼り付ける場所の説明を間違えました
入力するシートの「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けてください
ワークシート画面に戻って、適当な行のデータを削除してみてください
ただし本当の行削除を行うと合計行も上にずれてしまいますから、気をつけてくださいね
No.3ベストアンサー
- 回答日時:
#01です。
汎用的にしてみました。4~7行目を変更してくださいまた貼り付けも値のみにしています
Private Sub Worksheet_Change(ByVal Target As Range)
Dim idx, cnt As Integer
Dim rng As Range
Const fRow As Integer = 1 'データ開始行
Const tRow As Integer = 10 'データ最終行
Const fCol As String = "A" 'データ開始列
Const tCol As String = "E" 'データ最終列
Set rng = Intersect(Target, Rows(fRow & ":" & tRow))
If Not rng Is Nothing Then
cnt = Columns(fCol & ":" & tCol).Count
On Error GoTo err0
Application.ScreenUpdating = False
Application.EnableEvents = False
For idx = tRow - 1 To fRow Step -1
If Application.CountA(Cells(idx, fCol).Resize(1, cnt)) = 0 Then
Cells(idx + 1, fCol).Resize(tRow - idx, cnt).Copy
Cells(idx, fCol).PasteSpecial Paste:=xlPasteValues
Cells(tRow, fCol).Resize(1, cnt).ClearContents
End If
Next idx
Target.Select
End If
err0:
Application.CutCopyMode = False
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
判りやすいプログラムありがとうございます。
個人的には500ptつけたいぐらい親切に対応してくださって感謝です。。
本当は同じような感じで他の列も同じシートでやりたいんですが…そこまでは贅沢ですよね(汗
本当に助かりました。ありがとうございます★★★
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) Excelのマクロについて:コピー→セル移動→貼り付け 3 2022/04/17 20:46
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
メッセージボックスのOKボタ...
-
ExcelのVBA。public変数の値が...
-
一つのTeratermのマクロで複数...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで別のセルにあるふり...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
Excel2013 VBA マクロ実行中に...
-
エクセルに張り付けた写真のフ...
-
IF関数を使ってマクロを実行さ...
-
Excel 改ページのVBAうまくい...
-
エクセルのマクロについて教え...
-
ExcelVBA 図形をクリックした...
-
EXCELのVBAでRange("A1:C4")を...
-
Excelのマクロについて教えてく...
-
有効数字N桁のマクロについて
-
MSアクセスのマクロ・モジュー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報