つい集めてしまうものはなんですか?

エクセル上で変数を用いた行全体の削除を行うマクロを組みたいと思っております。
具体的に言えば、
Range("2:16").EntireRow.Delete とすれば、2行目から16行目までを
削除するという意味になりますが、ここの「2」及び「16」の箇所を
InputBox関数で変数化したいのです。
なにぶんにも初心者ですので、舌足らずの部分があると思いますが、
なにとぞご教授くださいますようお願いいたします。

A 回答 (3件)

行全体の選択ですよね


InputBoxの変数が
GYOUST、GYOUENDとして
Rows(GYOUST & ":" & GYOUEND).EntireRow.Delete
と入れてみてください。
    • good
    • 4
この回答へのお礼

hallo-2007さんのアドバイスをもとに

Dim 行st As String
Dim 行ed As String
行st = InputBox("削除開始行を入力", "確認", "")
行ed = InputBox("削除終了行を入力", "確認", "")
Rows(行st & ":" & 行ed).EntireRow.Delete

と組んで見たところ見事にできました。
ありがとうごさいました。

お礼日時:2008/06/02 22:33

NO.2のものです。


既に解決されたようですが、サンプルに間違いがあり、そのままというのも気持ち悪いので

変数宣言部の
  Dim St_Row As Long
  Dim Ed_Row As Long

  Dim St_Row As Variant
  Dim Ed_Row As Variant
の間違いでした。
    • good
    • 2
この回答へのお礼

最後まで面倒を見ていただき、恐縮至極です。

お礼日時:2008/06/02 22:54

Sub Sample()


  Dim St_Row As Long '削除先頭行格納用
  Dim Ed_Row As Long '削除終端行格納用

  St_Row = InputBox("削除する最初の行番号を入力")
  Do Until IsNumeric(St_Row) '数字が入力されるまで繰り返す
    St_Row = InputBox("ST")
    If St_Row = "" Then Exit Sub '何も入力されなければ終了
    If CLng(St_Row) < 1 Or CLng(St_Row) > 65536 Then
      St_Row = vbNullString '1以下または65536より大きい数字ならもう一度入力
    End If
  Loop
  
  Ed_Row = vbNullString
  Do Until IsNumeric(Ed_Row)
    Ed_Row = InputBox("削除する最初の行番号を入力")
    If Ed_Row = "" Then Exit Sub
    If CLng(Ed_Row) < 1 Or CLng(Ed_Row) > 65536 Then
      Ed_Row = vbNullString
    End If
  Loop
  
  Sheets("Sheet1").Range(St_Row & ":" & Ed_Row).EntireRow.Delete
End Sub  
    • good
    • 2
この回答へのお礼

さまざまな入力パターンに対応するため、Do-Loopステートメント等との
組み合わせまでご提示いただき恐縮です。
いまの私の知識では、これらを完全に理解習得するまでは至りませんが、
研鑽に励みたいと思います。
ところでここでの「65536」とは、エクセルでのいわゆる限界行数を
意味しているという解釈でよろしいのでよね。

お礼日時:2008/06/02 22:52

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


おすすめ情報