Terve,
omista ohjelmointiajoista on jo aikaa joten asiat ovat ihan unohtuneet. Jos jollain on ideoita ja aikaa, niin viitsisitkö jelppiä? Tarvii kipeästi ja omat taidot ei riitä, niin ideoita kaivataan! :)
On siis Excel -projekti, jossa on sheettejä kahdesta noin kahteen kymmeneen. Sheetit on nimetty näin: "Haku", "1", "2", "3" jne jne..
"Numerosheeteissä" pohja on kaikissa sama:
[ x ] [ x ] [ x ] [ x ] [ x ] [ x ] [ x ] [ x ] [ x ] [Etunimi] [Sukunimi] [Osoite] [Postit. nro] [Postit.paikka] [puhelin] [arvo1] [arvo2] [arvo3] Erkki Esimerkki Korpitie 123 X 3 69696 Hilsinki 012-345678 x x x
Eli ensimmäinen rivi sisältä vain painikkeet joita painamalla allaolevat tiedot saadaan lajiteltua. Esim. kun painan "Postitoimipaikka"-painiketta, niin kaikki allaolevat tiedot lajitellaan automaattisesti postitoimipaikan mukaan. Sama homma vastaavasti muilla kentillä. "Arvo" tilat voivat saada arvokseen vain "x" tai tyhjän.
Tuo tietojen lajíttelu on ensimmäinen kysymysmerkki minulle.
Toinen on ensimmäisen sheetin "haku". Eli yhteen ruutuun kirjoitetaan haettava sisältä, ja painikkeesta painamalla käydään kaikki olemassaolevat sheetit läpi ja läimästään ensimmäiselle sheetille nätisti kaikki vastaavat tiedot.
Eli jos haetaan sanalla "pekka" niin näkyviin tulee kaikista sheeteistä allekain ne henkilöt ja niiden tiedot joista löytyy sana "pekka". Haun pitäisi kattaa niin Pekka nimiset, pekkatiellä asuvat kuin pekkalassa majailevat henkilöt.
Toivottavasti siinä oli tarpeellinen tieto. Ehkä vähän sekavasti kirjoitettu, mutta jos edes joku ymmärtäisi :)
En välttämättä kaipaa valmista pohjaa, vaan myös ideat ja ajatukset otetaan mielenkiinnolla vastaan! Aika vain loppuu kesken enkä saa tuota millään tehtyä jos kukaan ei auta.. Pitää mennä 3.60€ päivärahan puolesta tetsaamaan vajaan viikon sisällä.
Sorttauksen voi toteuttaa oheista koodinpätkää muokkaamalla.
ActiveSheet.UsedRange.Sort Key1:=Range("a2"), Order1:=xlAscending, Header:=xlYesOheinen sortaa A-sarakkeen mukaan nousevaan järjestykseen, vaihtamalla a2-->b2 saat b sarakkeen mukaisen järjestyksen. Laskevaan järjestykseen saat vaihtamalla xlAscending --> xlDescending
Tuon haun voisi toteuttaa oheista koodia(ei juurikaan testattu) muokkaamalla:
Sub Hakua()
hakusana = "pekka"
For Each S In ActiveWorkbook.Sheets 'käydään läpi jokainen välilehti
If S.Name <> "Haku" Then ' ei kuitenkaan haku lehdykkää
i = 3 'määritellään ensimmäinen hakurivi
Do Until S.Cells(i, "A").Value = "" 'loopataan joka rivi kunnes A-sarake on tyhjä
j = 1 'määritellään ensimmäinen hakusarake
Do Until S.Cells(i, j).Value = ""
If InStr(1, S.Cells(i, j).Value, hakusana) > 0 Then 'verrataan hakusanaan
'jos löytyi niin kopioidaan haku lehdelle
KopioiRiviHakuun S.Name, i
Exit Do
End If
j = j + 1
Loop
i = i + 1
Loop
End If
Next
End Sub
Sub KopioiRiviHakuun(S As String, ByVal Rivi As Long)
hakui = 10 'hakutulokset alkavat riviltä 10
Do Until Sheets("haku").Cells(hakui, "A").Value = "" 'etsitään ensimmäinen tyhjärivi haku lehdeltä
hakui = hakui + 1
Loop
'kopioidaan tiedot annetusta sheetistä ja rivistä
sar = 1 'kopioidaan alkaen sarakkeesta 1
Do Until Sheets(S).Cells(Rivi, sar).Value = ""
Sheets("haku").Cells(hakui, sar).Value = Sheets(S).Cells(Rivi, sar).Value
sar = sar + 1
Loop
End SubTäysin off-topiccia tähän väliin (pahoittelen):
Minä kirjoitti:
Pitää mennä 3.60€ päivärahan puolesta tetsaamaan vajaan viikon sisällä.
1.1.2007 alkaen 3,8e.
Kiitos paljon Hycke! Tosta on jo hyvä viritellä. Onneksi on ihmisiä jotka osaavat :) Tuota kun tuijottaa, niin huomaa kuinka vähän noista oikeasti muistaa.. :/
3,80€/päivä? Jee.. Minähä rikastun :$ Tein jo pankin kanssa sopimuksen siitä, nyt tietävät miten toimia jos tilille ei enempää mahdu!
Sain tietojen haun toimimaan ja homma lähti jo käyttöön. Yksi tuossa jäi vain vaivaamaan..
Haku erottelee isot ja pienet kirjaimet. Hakusana "Pekka" ei löydä pekkkaa jos nimi on kirjoitettu vaikka vahingossa pienellä. Myöskään "pekka" ei löydä "Pekka":a..
Periaatteessa tuo ei haittaa, mutta tuntuu aika herkkätunteiselta. Voiko tuolle tehdä jotakin?
InStr:lle voi antaa parametrin vbTextCompare, jolloin eroa ei ole.
Jep, näin onkin. Kiitos sooda! Onko olemassa jotain hyviä saitteja vba:sta? Oppaita ja esimerkkejä
Aihe on jo aika vanha, joten et voi enää vastata siihen.