Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 6.767 pregleda

Najnovija ↓

Excel & Visual Basic for Application 17.11.2005. u 00:05 · pre 255 meseci #1
Zna li neko ekvivalent Excel-ove f-je =SEARCH(Text1,Text2,broj) u VBA,
npr: hteo bih da uporedim spisak iz kolone C , sa nekom reci koja je uneta u TextBox1 a da ne koristim f-je vec samo VBA
Re: Excel & Visual Basic for Application 17.11.2005. u 13:46 · pre 255 meseci #2
Možda je malo glupo, ali radi

Code:

Dim x as long 

for x = 1 to <koliko god redova imaš>
   if sheet1.cell(x, 3).text = text1.text then  'nisam siguran da li prvo ide red pa kolona ili obrnuto
     ' tekst je isti
   else
     ' text je različit
   end if 
next


Možda kod nije 100% ispravno napisan, ali predpostavljam da shvataš poentu
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Re: Excel & Visual Basic for Application 17.11.2005. u 18:24 · pre 255 meseci
izmenjeno 1 put, poslednji put Marko_L 17.11.2005. u 18:25
  1. Marko_L17.11.2005. u 18:25zapis iz teksta poruke
#3
Tako nešto, mada je možda bolje koristiti Range (ako ništa drugo mislim da će ići brže).Nešto ovako
Code:
Dim celija As Range
For Each celija In Workbooks(1).Worksheets(1).Range("C1:C100") 'umesto 100 stavi koliko redova imas
If celija.Value = Text1.Text Then
'postoji vrednost
Else
'ne postoji vrednost
Next celija
End If
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Excel & Visual Basic for Application 17.11.2005. u 21:15 · pre 255 meseci #4
Uradi ovako: Ukljuci snimanje makroa i pokreni pretragu... Zatim iskljuci snimanje makroa i u VB editoru pogledaj sta ti je Excel isprogramirao. Zatim se sa tim poigraj i optimizuj.

Pozdrav.
Re: Excel & Visual Basic for Application 17.11.2005. u 22:14 · pre 255 meseci #5
Može, samo što će onda dobiti rešenje sa Find funkcijom koja vraća error ako vrednost koja je zadata kao what parametar ne postoji ni u jednoj ćeliji, tako da bi morao da, umesto prostog If...Then...Else...End If, za pronađeni parametar koristi If, a ako nije pronađen da radi error hendling, što može doneti problem, ukoliko u istom makrou postoji neka druga greška.Po meni je to bespotrebno komplikovanje.Ukoliko vrednost koju traži sigurno postoji u nekoj ćeliji, onda to nije problem.
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Excel & Visual Basic for Application 18.11.2005. u 12:04 · pre 255 meseci #6
Error handling ce odraditi posao bez problema - ma sta jos radio u makrou. Jednostavno se treba poigrati sa time. Inace ove built-in f-je rade daleko brze od svega drugog, a sam sam ih koristio bezbroj puta... bez ikakvih problema (doduse u Wordu).

Pozdrav.
Re: Excel & Visual Basic for Application 18.11.2005. u 23:51 · pre 255 meseci
izmenjeno 1 put, poslednji put Shadowed 19.11.2005. u 14:10
  1. Shadowed19.11.2005. u 14:10zapis iz teksta poruke
#7
U stvari hteo sam da od niza imena koji se nalazi u koloni C, izdvojim celije koji u svojim vrednostima sadrže deo reči koji sam , recimo, uneo u TextBox1 i smesti ga u ListBox1 (bez obzira na mala i velika slova) a i ujedno bi trebao sam , tog trenutka, da izbroji redove koje treba proveravati

npr. niz u koloni C se sastoji iz imena

1 Milana
2 Milovana
3 Ana
4 Steva
5 Mika
6 Stevana
7 Sladjana
8 Milica

uneta vrednost u TextBox1 je "ANA"
a izdvojeni niz u ListBox1 trebao bi biti

1 Milana

2 Milovana
3 Ana
6 Stevana
7 Sladjana


Pa sam to rešio na ovaj način, malo je komplikovano, ali radi.



Code:

Private Sub TextBox1_Change()
    Dim A As Integer, B As Integer, C As Integer, I As Integer, Y As Integer, Zniz1 As String, Zniz2 As String
    A = 1
    frmIme.ListBox1.Clear
        Zniz1 = frmIme.TextBox1.Value
            Do Until Sheets("1").Range("C" & A) = ""
                Zniz2 = Sheets("1").Range("C" & A)
                    B = Len(Zniz1)
                    C = Len(Zniz2) - B + 1
                        Y = 0
                        For I = 1 To C
                            If Mid(LCase(Zniz2), I, B) = LCase(Zniz1) And Y = 0 Then
                                Y = Y + 1
                                frmIme.ListBox1.AddItem A & "   " & Sheets("1").Range("C" & A) 'PRIKAZUJE REDNI BROJ ĆELIJE I IZDVOJENO IME
                            End If
                        Next I
                    A = A + 1
            Loop
End Sub


U svakom slučaju hvala na trudu.

[Shadowed: dodati [code] tagovi.]
Re: Excel & Visual Basic for Application 19.11.2005. u 14:48 · pre 255 meseci
izmenjeno 1 put, poslednji put Marko_L 19.11.2005. u 14:52
  1. Marko_L19.11.2005. u 14:52zapis iz teksta poruke
#8
Pa što tako zaboga :) Evo, ovako ti je kraće.
Code:
Dim A As Integer, Zniz1 As String, Zniz2 As String
A = 1
frmime.ListBox1.Clear
Zniz1 = frmime.TextBox1.Value
Do Until Sheets("1").Cells(A, 3) = ""
Zniz2 = Sheets("1").Cells(A, 3)
If InStr(1, Zniz2, Zniz1, vbTextCompare) > 0 Then frmime.ListBox1.AddItem A & "   " & Sheets("1").Cells(A, 3)
A = A + 1
Loop

A moglo bi i još kraće ako bi izbacio string varijable, ali nema potrebe za tim.Ovako je pregledniji kod.
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Excel & Visual Basic for Application 21.11.2005. u 00:24 · pre 255 meseci #9
Citat:
Marko_L: Pa što tako zaboga :) Evo, ovako ti je kraće.
A = 1
frmime.ListBox1.Clear
Zniz1 = frmime.TextBox1.Value
Do Until Sheets("1").Cells(A, 3) = ""
Zniz2 = Sheets("1").Cells(A, 3)
If InStr(1, Zniz2, Zniz1, vbTextCompare) > 0 Then frmime.ListBox1.AddItem A & " " & Sheets("1").Cells(A, 3)
A = A + 1
Loop

Samo da dodam, nakon poslednje linije, ubaci A = 1 , za svaki slucaj.


Pozdrav
Re: Excel & Visual Basic for Application 21.11.2005. u 00:34 · pre 255 meseci #10
Zašto kada ima u prvoj liniji A = 1 ? Uostalom A je lokalna varijabla tako da će svejedno čim se izvrši procedura A da bude nula, tako da mu A = 1 u poslednjoj liniji ne znači ama baš ništa.
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: Excel & Visual Basic for Application 21.11.2005. u 17:37 · pre 254 meseca #12
Slučaj čega ? Ozbiljno pitam.Ako nešto znaš, podeli to sa nama.Jel ti se dešavalo da dobiješ pogrešan rezultat ili...?
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme