現在出納帳を作成中です。入力はすべてuserformから行っており削除もuserformか行っております。
しかし出納帳だけは削除したい行をクリックすると削除のuserformが表示されボタンを押すと実行されます。ボタンを押したら削除userformの日付、費目、内容が完全一致したら(出納帳)別シートの該当する行も一緒に削除できればと思います。別シートは科目ごとに計14シートあります。
(例)1、出納帳で削除したい行を選択
2、userformで内容を確認し削除を実行
3、関連する別のシートの行も自動削除
いろいろためしましたがうまくいきませんのでどなたかアドバイスお願いいたします。
(出納帳のみ削除)
Private Sub 削除_Click()
MsgBox ("削除します。よろしいですか")
ActiveSheet.Unprotect
Selection.Range(Cells(1, 1), Cells(1, 8)).Delete Shift:=xlShiftUp(範囲指定)
Unload Me
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは。
>ActiveSheet.Unprotect
>Selection.Range(Cells(1, 1), Cells(1, 8)).Delete Shift:=xlShiftUp(範囲指定)
画像の「合計」の行の上がっていくことになると思います。空白行を作りたくない目的で、行のDeleteをしているのでしょうか?
私の作ったものと考え方がよく似ています。以下の行削除のマクロは、今から10年ぐらい前に作ったもので、未だ、現在まで使っています。ただ、削除する前に、その行をコピーして、バックアップシート・Worksheets("バックアップ")に削除した記録を取っています。一度も、その残骸にフィードバックしたことはありませんが。
同じ行に一致したものへの削除ですが、まず、削除する前に、配列での確保がよいのではないかと思います。そうしないと、出納帳で削除するのは、一番後になります。
※日付値の検索は、微妙な所があります。こちらは、Excel2010で作成しております。
以下の「 LookIn:=xlFormulas」の部分は、こちらでは成功していますが、他のバージョンでは分かりません。
'//昔から使っていたものなので、A65536が出てきています。
Sub TestMarco()
Dim Rng As Range
Dim Ar As Variant
Dim sh As Worksheet
Worksheets("出納帳").Unprotect
Set Rng = ActiveCell.EntireRow.Range(Cells(1), Cells(8))
Ar = Rng.Value
If MsgBox(Rng.Cells(1).Value & vbCrLf & "を削除してよろしいですか?", 32 + vbOKCancel) = vbCancel Then Exit Sub
Rng.Copy Worksheets("バックアップ").Range("A65536").End(xlUp).Offset(1)
Rng.Delete Shift:=xlShiftUp
For Each sh In Worksheets
If sh.Name <> "出納帳" And sh.Name <> "バックアップ" Then
'もしかしたら、sh.Unprotect が必要かもしれません。
Call FindAll(sh, Ar)
End If
Next
End Sub
Sub FindAll(sh As Worksheet, baseArray As Variant)
Dim srchVal As Variant
Dim c As Range
Dim i As Long
Dim Arbuf As Variant
srchVal = baseArray(1, 2) '日付値で探す
With sh
Set c = sh.Cells.Find( _
What:=srchVal, _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns)
If c Is Nothing Then Exit Sub
Arbuf = c.EntireRow.Cells(1).Resize(, 8)
For i = 1 To UBound(baseArray, 2)
If Arbuf(1, i) <> baseArray(1, i) Then Exit For
Next i
If i > UBound(baseArray, 2) Then '完全一致
c.EntireRow.Cells(1).Resize(1, 8).Delete Shift:=xlShiftUp
End If
End With
Set c = Nothing
End Sub
'///
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/03/01 15:44
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) エクセルのVBAにショートカットキーの割り当て 3 2022/07/13 14:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA:Openステートメントで開い...
-
指定した文字があった場合、そ...
-
日テレニュースHP、記事削除は...
-
今日の日付が過ぎたらその行を...
-
Facebookメッセンジャーの不具合
-
ダブルクォーテーションの削除...
-
教えて!gooにはどのカテゴリが...
-
喧嘩をしてLINE削除され、 また...
-
【エクセル】セル内の右側のみ...
-
「リクエストの有効期限が切れ...
-
「医者も看護師も自分に嫌がら...
-
アクセスにおいて間違って削除...
-
LINEのホームのベルマークにあ...
-
エクセルVBAで行削除時にエラー...
-
離婚後の連絡
-
Excel 数式を入れているため、...
-
もう関わりたくない人がいたらL...
-
Adobe AcrobatのPDFのページ削除
-
マクロで特定の行まで削除する...
-
文字列末尾のスペースを削除したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
もはや喧嘩売ってるのか私(笑...
-
回答がついてる普通の質問まで...
-
指定した文字があった場合、そ...
-
VBA:Openステートメントで開い...
-
AI削除には数多のキーワード設...
-
インスタグラムのギャラリーの...
-
バッチファイルを使用したsql@p...
-
Yahooフリマってどれくらい時間...
-
Facebookメッセンジャーの不具合
-
削除の対象について
-
エクセルで住所の混在する「丁...
-
ビジネスパートナーから送られ...
-
女友達にLINEしたら、既読スル...
-
もう関わりたくない人がいたらL...
-
喧嘩をしてLINE削除され、 また...
-
猫にグラグラの熱湯かける動画...
-
すべてやりきった、大満足を意...
-
インスタアカウント、前の携帯...
-
Facebookに自分が四つもアップ...
-
Facebookで間違ってスートリー...
おすすめ情報