2016-04-12 28 views
0

Özel bir karakterle alfasayısal karakterlerden oluşan bir metin içeren bir sütuna sahibim '-' gibi -1, Amp-2, Xua-09, vb. Aşağıdaki kodu denedim, ancak Kat-1 gibi bir metni kopya olarak görmüyor. Herkes bu kodun neyin yanlış olduğunu kontrol edebilir.Bir metin kutusu girdisini metin içeren bir sütuna ('-' ile alfanümerik) karşılaştır, bir çoğaltma bulunursa, kullanıcıyı uyar

Private Sub txt_BPName_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
Dim myrange As Range 
Dim match As Boolean 
Dim val 
Set myrange = Worksheets("Sheet1").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).row) 
match = WorksheetFunction.CountIf(myrange, val) > 0 
If match Then 
MsgBox ("Duplicate") 
Cancel = True 
End If 
End Sub 
+0

an "val" Erişim ("A2: A" olarak her için c – user3598756

cevap

0

Bence instr() işlevine bakmalısınız. Sütununuzda yineleme yapabilir ve sütundaki her bir hücreyi bir for döngüsü ile metin kutusu değerinizle karşılaştırabilirsiniz. Bu muhtemelen en kolay çözümdür. E-tablonuzun bir bölümünü yayınlarsanız, işlevinizi çalışmak üzere düzenlemek daha kolay olurdu.

+0

'Private Sub txt_BPName_Exit (MSForms.ReturnBoolean olarak iptal byval) tanımlamaz ve Hücreler (Rows.Count, 1), sonda (xlUp) .row) Eğer c.Value = txt_BPName Sonra MsgBox "Cell" & c.Address & "bir kopyasıdır." Sonraki c İptal = Doğru End Sub' Bu kod çiftleri buluyor, ancak tek sorun, bir metin kutusunda bir kopyasını çoğaltma olarak bulmam. Bundan nasıl sakınacağınız hakkında bir fikrin var. @ user3598756 @Tyler Denton – Abhi0609

+0

Gerçekten yaşadığınız sorunu anlamıyorum ama bu işe yarayacak. Tamsayı Dim Match gibi tamsayı Dim I As Seçeneği Açık Private Sub CommandButton1_Click() Dim x burada Tamsayı gibi Tamsayı Dim As String Dim satır burada ActiveSheet x = .Cells (.Rows ile 0 = gibi. Sayım, "A") End (xlUp) .row Eşleme = Me.TextBox1.Text I = 1 Kime x için burada = InStr (.Cells (I, 1), Match) Burada <> 0 Sonra MsgBox ("Sıradaki maç" + Str (I)) End Burada = 0 Sonraki I End ile End Sub –