- ベストアンサー
マクロ:セルの選択
- 他の方の作ったマクロなのですが、入力されている次の行(空白行)を選択する、というものだと思うのですが、400行ほど入力があり、その後マクロを実行すると更に空白行を400行ほどいった行が選択されてしまいます。
- その間の空白に見える400行を全て削除してやり直しても同じです。
- 何か原因は考えられるでしょうか?
- みんなの回答 (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)
原因はこの部分では無いと思われます。 このマクロは、B列~U列が空になっている(入力されて居ない)行をアクティブ行から下に1行づつ探しています。 そして、見つかった行番号を「Gyou1」と言う変数に入れて居ます。 恐らく、入力行の一番上の行がアクティブ行の状態でこのマクロが動く様になっているのでしょう。 例えば、1~400行まで入力が在り、B1セルがアクティブな場合、Gyou1=401 に、なります。 今回提示されて居ませんが401行目をselectするような動きをするのでしょう。 そして、トラブルは、恐らく401行目をSelectした後に、その更に401行下の行をSelectしている箇所が在るのではないでしょうか。 コードを見る限り、マクロを作りなれて居ない方が作られているようです。 マクロを1行づつステップ実行しながら動作を確認してみてください。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 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
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
選択( ○○○○.select )が提示されていないのでなんともいえないです。 とりあえず、勉強がてら↓作ってみました。 1列目と22列目がどのようになっているかで 希望する動作にならない可能性があります。 1行マクロです。 Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row, _ ActiveCell.Column).Select