ExcelVBA行削除

このQ&Aのポイント
  • ExcelVBAを使用して選択されたセルから指定された行数分下の行を削除する方法について教えてください。
  • 以下のソースコードを使用して行削除マクロを作成しましたが、エラーが発生しています。理由を教えてください。
  • 選択されたセルから指定された行数分下の行を削除するExcelVBAの行削除マクロの修正方法を教えてください。
回答を見る
  • ベストアンサー

ExcelVBA 行削除

ExcelVBA 行削除 行削除マクロを組んでみようと、以下のソースを書きましたが エラーが出てしまいます。理由分かりますか?? ==ソース========================= Sub DeleteRows() Dim Va1 As Integer, Va2 As Integer, Va3 As Integer Worksheets("Sheet1").Activate Va1 = Selection.Row Va2 = Application.InputBox(Prompt:="何行消しますか??", Type:=1) Va3 = (Va1 + Va2) - 1 Rows("Va1:Va3").Delete End Sub ============================== やりたい事は、選択されているセルの行から数行(行数は数値指定)下までを選択して、 それを削除したいだけです。

質問者が選んだベストアンサー

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

Rows("Va1:Va3").Delete ↓ Range(Rows(Va1), Rows(Va3)).Delete

004532
質問者

お礼

教えて頂き有難うございました。 思っていたことが実現出来ました。

その他の回答 (1)

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.2

一例ですが、・・・ Rows("Va1:Va3").Delete       ||     \/ Rows(Va1 & ":" & Va3).Delete このようにしてみてください。

004532
質問者

お礼

教えて頂き有難うございました。

関連するQ&A

  • EXCELVBAで行の削除

    WIN98SE EXCEL2000です。 G列に99の文字があったらその行を削除するというVBAを下記のように作りました。 Dim i As Integer Dim rowcount As Integer rowcount = Cells(1,1).CurrentRegion.Rows.Count For i = 1 To rowcount If Cells(i, 7) = "99" Then Rows(i).Delete Next i これを実行するとG列に99のある行が連続してあると1行おきに削除されます。どこをなおせばよいのか教えてください。よろしくお願いします。

  • エクセルVBAで行削除時にエラーが発生します。

    こんにちは。 エクセル2002を使用しています。 VBAで、開始行を入力させ開始行+38行を削除するような マクロを作りました。 Sub 削除() Dim Sline As Integer, Eline As Integer Dim S As String '開始行の入力 Sline = Application.InputBox(prompt:="削除開始  行を入力して下さい。",Type:=1) '開始行が入力された場合 If Sline <> False Then '開始行のチェック '終了削除行のセット Eline = Sline + 37 '削除確認メッセージ S = MsgBox(Sline & "~" & Eline & _ "行を削除します。", _ vbOKCancel + vbExclamation, _ "行削除確認") If S = vbOK Then Rows(Sline & ":" & Eline).Select Selection.Delete Shift:=xlUp End If End If End Sub これを実行すると Selection.Delete Shift:=xlUp のところで、 実行時エラー 1004 RangeクラスのDeleteメソッドが失敗しました。 でとまってしまいます。 どなたか対応策を教えてください。 よろしくおねがいいたします。

  • 行を削除するマクロ

    以下のような、行を削除するマクロがあります。 Workbooks("123.csv").Activate Rows("5:10").Select Selection.Delete Shift:=xlUp しかし、123.csvを開いていない場合にはエラーが出てしまいます。 そこで、このようにしました。 On Error Resume Next Workbooks("123.csv").Activate Rows("5:10").Select Selection.Delete Shift:=xlUp しかし、エラーが出ない代わりに、アクティブなブックの行が削除されてしまいます。 123.csvが開かれている場合には、行を削除し、 開かれていない場合には、何もせずエラーも出さないようにするにはど のようにすればいいでしょうか。 よろしくお願いします。

  • Excel2010でテーブルの行をマクロで削除

    テーブル内の行をマクロで削除したいと考え、下記の様な構文を書きました。 ですが、どうもエラーが出てしまいますので、原因と解決法を教えて下さい。 まず、テーブル”BBB”のデータをユーザーフォームのリストボックス”CCC”へ読み込んでいます。 リストボックスで選択したデータの行数を取得し、 ユーザーフォーム上のコマンドボタン”削除”をクリックした際に その行数のデータに該当するテーブル内の行を削除したいと考えています。 しかし、実行すると、 「RangeクラスのSelectメソッドが失敗しました」 と、出てしまいます。 何処がいけないのでしょうか?宜しくお願いします。 Private Sub CommandButton削除_Click() Dim SelectedListRows As Integer Dim myListObj As Object Set myListObj = Worksheets("AAA").ListObjects("BBB") SelectedListRows = ListBoxCCC.ListIndex   myListObj.DataBodyRange.Rows(SelectedListRows).Select Selection.Delete Unload Me MsgBox "データを削除しました。" End Sub

  • VBAでの行削除について

    教えてください。 現在、VBAを使用して、CSVファイルの編集をしたいと考えています。 フォルダ内に数個のCSVファイルがあり、それらにすべて同じ処理(行削除など)をしたいのです。 下記のようなプログラムです。 Sub getting() Dim myPath As String Dim myFName As String Dim FCnt As Integer Dim A(500) As String MsgBox CurDir() Workbooks("自動処理.xls").Activate myPath = ActiveWorkbook.Path MsgBox myPath ChDir myPath FCut = 0 myFName = Dir("*.csv") If myFName <> "" Then FCut = FCut + 1 A(FCut) = myFName Do myFName = Dir() If myFName <> "" Then FCut = FCut + 1 A(FCut) = myFName MsgBox A(FCut) Else Exit Do End If Loop End If MsgBox "「" & myPath & "」には、" & FCut & "個のファイルがあります。" Dim i As Integer Dim seet As String Dim ws As Object Dim FullPath As String For i = 1 To 1 seet = Left(A(1), 6) FullPath = myPath & "\" & A(i) 'Workbooks.Open(FullPath).Activate Open FullPath For Append As #1 Print #1, Rows("1:1").Select Selection.Delete Shift:=xlUp Rows("2:2").Select Selection.Delete Shift:=xlUp Range("A1").Select Print #1, Range("A1").Value = "" Print #1, Range("A1").Value = "COMP_NAME" Print #1, Range("B1").Select Print #1, ActiveCell.Value; "PC_OS" Print #1, Range("C1").Select Print #1, ActiveCell.Value = "OS_SUB_VERS" Print #1, Range("D1").Select Print #1, ActiveCell.Value = "IP_ADDR" Print #1, Range("E1").Select Print #1, ActiveCell.Value = "LOCATION " Close #1 ' Workbooks(A(i)).Save ' Workbooks(A(i)).Close savechanges:=False  Next i End Sub 教えていただきたいのは、どうにかworkbook.openを使わず、ファイルを編集できるところまでいったのですが、ファイルを開かずに行を削除することができません。   >Print #1, Rows("1:1").Select >Selection.Delete Shift:=xlUp >Rows("2:2").Select >Selection.Delete Shift:=xlUp ファイルを開かずに行削除をできるものなのでしょうか。 ご存知の方がいれば教えてください。 よろしくお願いいたします。

  • ExcelVBAで行の非表示、表示をコード化したい

    現在、Excel2003をつかっており、VBAを用いて sheet1シートの2行目、4行目、10行目を非表示にするマクロ(HIDDEN)と すべての行を表示にするマクロ(APPEAR)を使っています。 Sub HIDDEN() ThisWorkbook.Worksheets("sheet1").Rows("2").HIDDEN = True ThisWorkbook.Worksheets("sheet1").Rows("4").HIDDEN = True ThisWorkbook.Worksheets("sheet1").Rows("10").HIDDEN = True End Sub Sub APPEAR() ThisWorkbook.Worksheets("sheet1").Rows.HIDDEN = False End Sub いま、2つのマクロを併合し 「Sheet1の2行目、4行目、10行目のいずれかが非表示であれば、すべての行を表示 そうでなければ、2行目、4行目、10行目のすべてを非表示にしたい」 と考えています。 ここで私が困っているのは、2行目、4行目、10行目のいずれかが非表示であれば というのをどうVBAで記述するのかです。

  • エクセル VBAで複数行の選択

    エクセル2002使用です。 VBAで変数を使って複数行の選択で、6行目から9行目までを選択したいのです。 sub macro2() Dim rw As Integer rw=8 Rows("rw - 2:rw + 1").Select end sub だとエラーになります。 Rows("6:9").Select のようにしたいのですがどこが悪いのでしょうか? よろしくお願いします。

  • エクセルの行選択マクロ

    エクセル2010にて。 行を選択した状態から、1行目から現在行の1つ上までを選択し、それを非表示とするマクロを組みたいのです。 VBAは全く分からず・・・ 変数を宣言し、その変数を代入すれば良いかと試行錯誤しましたが判らず。 Sub 3行目から現在行より上を選択して非表示() '  Dim x As Integer  x = ActiveCell.Row Rows("3:x-1").Select Selection.EntireRow.Hidden = True End Sub では、全く動作せず。。 例えば20行目を選択した状態で、マクロを実行すると3~19行目までが非表示になるようにしたいのです。御教示下さいませ。

  • 色のないセルの行削除

    任意の色で塗りつぶされたセルがあって、塗りつぶされたセルが存在する行を削除するマクロ。 Sub 行削除() Dim r As Integer Dim c As Integer For c = ActiveSheet.UsedRange.Columns.Count To 1 Step -1   For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1     If Cells(r, c).Interior.ColorIndex <> xlNone Then        Rows(r).Delete     End If   Next Next End Sub この逆のことがしたいのですが、わかりません。 ちなみにこのプログラムはそのままC&Pです。 内容もあまり理解できていません。(^_^;) 添付画像の逆に色のついた行だけ残したいです。 よろしくお願いします

  • 選択した範囲を配列に格納

    勉強はじめたばかりの超初心者です。 InputBoxメソッドを用いシートのなかからデータ処理をする範囲を選択 し、その選択した範囲の行数を求めようとしております。 下記の様にすればできることは承知しておりますが、選択した範囲の値 をSelectを用いずに直接配列に格納し、Ubound関数とかで行数を求める にはどうしたらよいのでしょうか。何かべつの変数を定義しVariantで 型宣言をしてといったところまでは想像つくのですが、それ以上がわかりません。ご教示いただけると幸いです。 Dim MotoN As Integer Public Sub データ範囲取得() Set MotoHani = Application.InputBox(Prompt:="元範囲を選択", Type:=8) MotoHani.Select MotoN = Selection.Rows.Count End Sub