あなたが持っているがあなたのコードをスピードアップできるあなたの質問を解決してください。
- 各セルは、
- むしろ試験よりも非ブランクで動作するように
SpecialCells
を用いて以下のコードは一緒に最終的な文字列をマージするJoin
を使用バリアント配列はなく、範囲ループ
を使用します。あなたは文字列操作("a = ''" + cell.Text + "'' "
部分)を持っていなかったなら、あなたは単にspecialcellsは、ステップ1
SpecialCellsコレクションと単一細胞内の複数の領域を処理するように更新(文句を言わない仕事は「varinats
から及ぶ参加することができ
Sub Diff()
Dim rng1 As Range
Dim rng2 As Range
Dim varTest
Dim strOut As String
Dim lngrow As Long
On Error Resume Next
With Range("D13:D263")
Set rng1 = .SpecialCells(xlCellTypeConstants)
If Not rng1 Is Nothing Then
Set rng1 = Union(rng1, .SpecialCells(xlCellTypeFormulas))
Else
Set rng1 = .SpecialCells(xlCellTypeFormulas)
End If
End With
On Error GoTo 0
If rng1 Is Nothing Then Exit Sub
For Each rng2 In rng1.Areas
If rng2.Cells.Count > 1 Then
varTest = Application.Transpose(rng2)
For lngrow = 1 To UBound(varTest)
varTest(lngrow) = "a = ''" & varTest(lngrow) & "'' "
Next
strOut = strOut & Join(varTest, ",")
Else
strOut = strOut & "a = ''" & rng2.Value & "'' "
End If
Next
MsgBox strOut
End Sub
は、あなたのコレクションのサンプルを投稿することができます – brettdj
私は例のコレクション – karlstackoverflow