• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ:セルの選択)

マクロ:セルの選択

このQ&Aのポイント
  • 他の方の作ったマクロなのですが、入力されている次の行(空白行)を選択する、というものだと思うのですが、400行ほど入力があり、その後マクロを実行すると更に空白行を400行ほどいった行が選択されてしまいます。
  • その間の空白に見える400行を全て削除してやり直しても同じです。
  • 何か原因は考えられるでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 B列からのようですし、私の解釈が、すべての行が空のセルということですと、#2のコードは違いましたね。 元のコードは、ループの抜けた後に、 Cells(Gyou1, ActiveCell.Column).Select が必要ですね。 '------------------------------------------- Sub MacroTest1R()   Dim i As Long   Dim j As Long   Dim n As Long   Dim m As Long   Const COL As Integer = 2 '列の始まり   With ActiveSheet     j = ActiveCell.Row + 1     If ActiveCell.Value = "" Then Exit Sub     m = .Cells(Rows.Count, COL).End(xlUp).Row '最終行     n = ActiveCell.CurrentRegion.Columns.Count '最大幅     For i = j To m       '行全体が空行, < n というなら、ひとつでも空のセルがある場合       If WorksheetFunction.CountA(.Rows(i)) = 0 Then          '色付け         '.Rows(i).SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 36         Exit For       End If     Next i     .Cells(i, COL).Resize(, n).Select   End With End Sub '-------------------------------------------

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

原因はこの部分では無いと思われます。 このマクロは、B列~U列が空になっている(入力されて居ない)行をアクティブ行から下に1行づつ探しています。 そして、見つかった行番号を「Gyou1」と言う変数に入れて居ます。 恐らく、入力行の一番上の行がアクティブ行の状態でこのマクロが動く様になっているのでしょう。 例えば、1~400行まで入力が在り、B1セルがアクティブな場合、Gyou1=401 に、なります。 今回提示されて居ませんが401行目をselectするような動きをするのでしょう。 そして、トラブルは、恐らく401行目をSelectした後に、その更に401行下の行をSelectしている箇所が在るのではないでしょうか。 コードを見る限り、マクロを作りなれて居ない方が作られているようです。 マクロを1行づつステップ実行しながら動作を確認してみてください。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 Excelだとしたら、ありえないマクロです。 他でも同じようなことを書いたのですが、そういうテクニック的な質問に対する回答は最終的には無駄になって、また別な質問が立つことが多いと思います。最終的に何をしたいのか教えてください。次の空白を見つけることぐらいなら、いろんな方法があるかと思いますが、例えば、こんな風にできます。 '------------------------------------------- Sub MacroTest1()   Dim i As Long   Dim j As Long   Dim n As Long   Dim m As Long   With ActiveSheet     j = ActiveCell.Row 'アクティブセル行     If ActiveCell.Value = "" Then Exit Sub '選択した場所が空白セルでは動かない     m = .Cells(Rows.Count, 1).End(xlUp).Row '最終行     n = ActiveCell.CurrentRegion.Columns.Count '最大幅 または、21     For i = j To m       If WorksheetFunction.CountA(.Rows(i)) < n Then         '色付け         '.Rows(i).SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 36         .Cells(i, 1).Resize(, n).Select         Exit For       End If     Next i   End With End Sub

回答No.1

選択( ○○○○.select )が提示されていないのでなんともいえないです。 とりあえず、勉強がてら↓作ってみました。 1列目と22列目がどのようになっているかで 希望する動作にならない可能性があります。 1行マクロです。 Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row, _ ActiveCell.Column).Select

関連するQ&A