2016-03-09 2 views
-1

Я сделал очень длинный скрипт для переориентации файла excel. Поэтому я работаю с несколькими, если и все они работают нормально. Я пытаюсь знаете, что такое случилось с theese 2 части кода:VBA Если оператор не работает иногда

If InStr(1, Cells(i, 5), "cass", 1) Then 
    Cells(i, 135).Value = Cells(i, 135).Value & "/cassetti.jpg::cassetti inox;;/cassetti2.jpg::cassetti inox;;" 
End If  

В Cells 5 Я такие слова, как «Кассетти» или «Cassettiera» Теперь со словом «Касс» это написать на ячейку, только иногда. Эта вещь сводит меня с ума со 2 дней .. Вы видите то, чего я не вижу?

Edit: Это более большая часть моего кода:

Cells(1, 135) = "media_gallery" 
If InStr(1, Cells(i, 5), "tavol", 1) Or InStr(1, Cells(i, 5), "lav", 1) Or InStr(1, Cells(i, 5), "vasc", 1) Then 
Cells(i, 135).Value = img_tav 
End If 

If InStr(1, Cells(i, 5), "armadiat", 1) Then 
Cells(i, 135).Value = img_tav_arm 
End If 
If InStr(1, Cells(i, 5), "armadio", 1) Then 
Cells(i, 135).Value = img_arm 
End If 
If InStr(1, Cells(i, 5), "arm", 1) And InStr(1, Cells(i, 5), "cass", 1) Then 
Cells(i, 135).Value = img_cass_arm 
End If 
If InStr(1, Cells(i, 5), "caldo", 1) Then 
Cells(i, 135).Value = img_caldo 
End If 
If InStr(1, Cells(i, 5), "labirinto", 1) Then 
Cells(i, 135).Value = img_asp 
End If 
If InStr(1, Cells(i, 5), "lavatoio", 1) Or InStr(1, Cells(i, 5), "vasco", 1) Then 
Cells(i, 135).Value = img_lav 
End If 
If (InStr(1, Cells(i, 5), "lavat", 1) Or InStr(1, Cells(i, 5), "vasco", 1)) Then 
If InStr(1, Cells(i, 5), "armad", 1) Then 
     Cells(i, 135).Value = img_lav_arm 
End If 
End If 
If InStr(1, Cells(i, 5), "pens", 1) And InStr(1, Cells(i, 5), "scorr", 1) Then 
Cells(i, 135).Value = img_pensile 
End If 
If Cells(i, 5).Value Like "*cass*" Then 
Cells(i, 135).Value = Cells(i, 135).Value & "/cassetti.jpg::cassetti inox;;/cassetti2.jpg::cassetti  inox;;" 
End If 

И theese изменчивы объявлены на начало сценария:

img_tav = "/piede.jpg::piede in acciaio inox;;/saldatura.jpg::saldatura;;" 
img_tav_arm = "/anta.jpg::anta inox scorrevole;;/piede.jpg::piede in acciaio inox;;/saldatura.jpg::saldatura;;/saldatura2.jpg::saldatura;;/top-raggiato.jpg::Top raggiato opzionale;;/fianchi.jpg::fianchi inox lisci;;" 
img_arm = "/anta.jpg::anta inox scorrevole;;/piede.jpg::piede in acciaio inox;;/saldatura.jpg::saldatura;;/saldatura2.jpg::saldatura;;/fianchi.jpg::fianchi inox lisci;;" 
img_cass = "/piede.jpg::piede in acciaio inox;;/saldatura.jpg::saldatura;;/saldatura2.jpg::saldatura;;/top-raggiato.jpg::Top raggiato opzionale;;" 
img_cass_arm = "/piede.jpg::piede in acciaio inox;;/saldatura.jpg::saldatura;;/saldatura2.jpg::saldatura;;/top-raggiato.jpg::Top raggiato opzionale;;/fianchi.jpg::fianchi inox lisci;;" 
img_caldo = "/caldo.jpg::tavolo caldo;;/anta.jpg::anta inox scorrevole;;/piede.jpg::piede in acciaio inox;;/saldatura.jpg::saldatura;;/saldatura2.jpg::saldatura;;/top-raggiato.jpg::Top raggiato opzionale;;/fianchi.jpg::fianchi inox lisci;;" 
img_asp = "/labirinto.jpg::filtri a labirinto;;" 
img_lav = "/troppo-pieno.jpg::Troppo Pieno;;" 
img_lav_arm = "/troppo-pieno.jpg::Troppo Pieno;;/anta.jpg::anta inox scorrevole;;/piede.jpg::piede in acciaio inox;;/saldatura.jpg::saldatura;;/saldatura2.jpg::saldatura;;/top-raggiato.jpg::Top raggiato opzionale;;/fianchi.jpg::fianchi inox lisci;;" 
img_pensile = "/guide-pensili.jpg::Guide Anti Sporco;;/anta.jpg::anta inox scorrevole;;" 

Все они работают нормально, но не последним If ..

+1

Прописные * C * и строчные буквы * с * не то же самое, и вы только тестирование для нижнего регистра * c *. * cass * соответствует, потому что * c * имеет строчный регистр; * Cassetti * не потому, что * C * является UPPERCASE. –

+0

У меня есть другие, если работает даже если я не использую прописные буквы – BigBlack

+0

Покажите остальную часть кода. .. –

ответ

0

Используйте Option Compare Text в верхней части модуля, в котором находится этот код, или, приложите строки к последовательному корпусу, например:

Dim myString as Variant 
myString = LCase(Cstr(Cells(1,5).value)) 
If InStr(1, myString, "cass", 1) Then 
    Cells(i, 135).Value = Cells(i, 135).Value & "/cassetti.jpg::cassetti inox;;/cassetti2.jpg::cassetti inox;;" 
End If 
+0

У меня есть другие, если работаю даже если я не использую в верхнем регистре – BigBlack

0

Попробуйте использовать Like:

If myString Like "cass*" Then 

Это более удобным для чтения, гораздо быстрее и регистронезависимы

+0

даже с тем же, что и у меня ... И у меня есть другое, если с той же системой, и они работают, даже если у меня есть верхний регистр в искомых словах – BigBlack

Смежные вопросы