2

選択した列のフラット テキスト ファイルを生成するがあります。

問題は、通常、列の文字をクリックすると、未使用のセルをすべて含む列全体が強調表示されるため、プロセスに時間がかかることです。

最初の空の行が見つかったときにマクロの処理を停止するにはどうすればよいですか?

これが私のコードです。

Sub testlist()
Open "C:\Users\gaum\Desktop\Work\NCL\testlist.lst" For Output As #1
For NR = 1 To Selection.Rows.Count
For NC = 1 To Selection.Columns.Count
ExpData = Selection.Cells(NR, NC).Value
If IsNumeric(ExpData) Then ExpData = Val(ExpData)
If IsEmpty(Selection.Cells(NR, NC)) Then ExpData = ""
If NC <> NumCols Then
If Not ExpData = "FilePath" Then Print #1, ExpData
End If
Next NC
Next NR
Close #1
End Sub

また、Ctrl キーを押しながらさまざまなセルを左クリックして複数のセルを選択した場合、マクロで出力を生成することもできます。現在、最初のハイライトのみが出力されます。

どうもありがとう

4

2 に答える 2

0

このプロセスには時間がかかるため、空白のセルで停止するだけでなく、非効率的な範囲ループを完全に削除することをお勧めします。以下のコード

  • 範囲ではなくバリアント配列を使用します
  • 冗長な 2 ステップIFテストを削除します (ExpDataが数値の場合は になりません"FilePath")

コード

Sub testlist()
Dim X
Dim lngCnt As Long
X = Selection
If IsEmpty(X) Then Exit Sub
Open "C:\Users\gaum\Desktop\Work\NCL\testlist.lst" For Output As #1
For lngCnt = 1 To UBound(X)
If Len(X(lngCnt, 1)) = 0 Then Exit For
If IsNumeric(X(lngCnt, 1)) Then Print #1, Val(X(lngCnt, 1))
Next
Close #1
End Sub
于 2013-07-13T05:15:10.067 に答える