3

私は次のことをしようとしています:

  1. ボタンを押すと、マクロがアクティブになります。
  2. マクロは、シート 2 (同じブック) の列 H を選択します。データがなくなるまで、列全体ではありません。データのある最後の行は、その行の次の 10 行が空であるかどうかを判断できます。
  3. この選択では、「一般」形式がすべてのセルに適用されます。
  4. この後、G列も同様です。
  5. マクロが終了します。

簡単にできるはずだと思いますが、列全体に適用されるかのように、「データで最後の行を決定する」部分に特に苦労しています。PCが大幅に遅くなります。

次に、ベスト プラクティスとしてコード (Sheet、ThisWorkbook、Module) をどこに配置すればよいかわかりません。

4

2 に答える 2

8

これを行う方法は他にもありますが、一般的に最も簡単な方法は、大きな行番号を選択して (20,000 行を超えることはありますか?)、上に移動することです。

Range("H2", Range("H20000").End(xlUp)).NumberFormat = "General"
Range("G2", Range("G20000").End(xlUp)).NumberFormat = "General"

ただし、列全体をフォーマットすることもできます。

Range("G:H").NumberFormat = "General"

これは (最近では) ファイルのサイズには影響しません。

シートのボタンをクリックしてマクロを実行したいので、フォーム コントロール、ボタンを使用すると、コードは標準モジュールになります。

追加(私のコメントから):

これはうまくいきます:

Application.Intersect(ActiveSheet.UsedRange, Range("G:H")).NumberFormat = "General"

ただし、これらの範囲が交差しない場合に備えて、エラー処理が必要です。

コメントでさらに 2 つの質問に答える:

Worksheets("Whatever").Activate

列に適用されない場合NumberFormatは、干渉する何か他のことが起こっている必要があります。または、インポート時にデータに問題があった可能性があります (?) 試す:

Application.CalculateFull

または、特定の範囲を使用します。

Range("..").Calculate

これが機能しない場合は、データを空白の列にコピーして、古い列を削除する必要があります。または、おそらくコピーして同じ範囲に貼り付けます(おそらく値)。

于 2013-06-18T18:50:32.830 に答える
1

範囲またはシートを選択せず​​に、列 G および H のすべてのセルを一般的に書式設定できます。VBA コードでは何も選択しないでください。

データのある最後の行を見つける事実上の標準的な方法は、シートの一番下から始めてそこから上に行くことです。

次の例では、sheet2 の列 G と H の両方にデータがある最後のセルを検索します。2 つのうち最大のものを使用して、一般的な書式設定を適用するために使用する範囲を設定します。

Sub GeneralFormatForAllPopulatedCells()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim g As Long, h As Long
    Dim lastRow As Long
    Dim rng As Range

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet2")

    g = ws.Range("G" & ws.Rows.Count).End(xlUp).Row
    h = ws.Range("H" & ws.Rows.Count).End(xlUp).Row

    If g > h Then
        lastRow = g
    Else
        lastRow = h
    End If

    Set rng = ws.Range("G1:H" & lastRow)
    rng.NumberFormat = "General"


End Sub

コードをモジュールにOption Explicit配置し、モジュールの上部に表示されるようにして、変数宣言が必要になるようにする必要があります。VBA エディタ内からオプション ダイアログを開くことにより、すべてのモジュールに対してこれをオンにすることができます: [ツール] --> [オプション] を選択し、[変数の宣言が必要]の横にあるボックスをチェックします。

于 2013-06-18T19:35:07.310 に答える