範囲(この場合は使用範囲)内のキーワード(例:数量、数量、数量、...など)を検索しようとしていますが、問題を経験する。UsedRange - VBA(Excel)でキーワードを検索
Private Function GetQtyColFromBOQ(thisBOQ As Worksheet) As Range
Dim QtyWord(5), QtyWordG, Delim As String
Dim cl As Range
If thisBOQ Is Nothing Then Set thisBOQ = ActiveSheet
Delim = "|#|"
QtyWord(0) = "Quantity"
QtyWord(1) = "Qty"
QtyWord(2) = "Qty."
QtyWord(3) = "Qnty"
QtyWord(4) = "Qnty."
QtyWordG = Delim & Join(QtyWord, Delim)
For Each cl In thisBOQ.UsedRange
If InStr(1, QtyWordG, Delim & cl.Value & Delim, vbTextCompare) Then
Set GetQtyColumnFromBOQ = cl ' function return
Exit For
End If
Next
End Function
方法2(動作しない)::いいえ試合はおそらく間違っている可能性が何
Private Function GetQtyColFromBOQ(thisBOQ As Worksheet) As Range
Dim QtyWord(5) As String
If thisBOQ Is Nothing Then Set thisBOQ = ActiveSheet
QtyWord(0) = "Quantity"
QtyWord(1) = "Qty"
QtyWord(2) = "Qty."
QtyWord(3) = "Qnty"
QtyWord(4) = "Qnty."
Dim i As Integer
For i = 0 To 4
Set GetQtyColumnFromBOQ = thisBOQ.UsedRange.Find(QtyWord(i), LookAt:=xlWhole)
Next i
End Function
を発見した私はInStr
とFor each cell in UsedRange
方法1(スロー)を使用していますので、検索が遅いです?
ループのこのフォーム(このスニペットには示されていないループのコードの一部)を使用することができます。私が間違ったことを確認しようとします。 – Tima
(@Tima - これがうまくいけば、ポストの左にあるチェックマークをクリックして、答えとしてフラグを立てることができます) – BruceWayne
'Dim QtyWord(5)As String'は' Dim QtyWord (4)As String' - インデックス5を使用しない場合は、インデックス5の位置を割り当てることはありません。 'xlPart'を検索すると、' 'Qty" 'が見つからなかった場合は' 'Qty。' 'を検索し、' 'Qnty ''が見つからなかった場合は '' Qnty。 。 – YowE3K