kære martin Jeg ved godt at du er træt af HA studerende men du er vores eneste hjælp. Mit spørgsmål går ud på opgave 4. Der skal man lave en VBA script, som ved tryk på knappen Søg/Ret, for det første spørger brugeren om en værdi der ønskes fundet og dernæst søger databasen igennem efter den pågældene værdi. Hvis det ikke er muligt at finde den intastede værdi, skal der skrives en fejlmeddelses desangående. Hvis det er muligt at finde den indtastede værdi, skal hele rækkens informationer anvendes til at skrive de rigtige værdier i de rigtige områder. Jeg håber at du kan hjælpe os!!!
Kære martin - er det mig? Og jeg er da ikek træt af HA studerene fra Fyn :o)
Nu kender jeg jo efterhånden jeres opgave, så jeg ved at du mener regneark selvom du skriver database....
Det er en meget velformuleret opgave, med helt konkrete spørgsmål, som burde være lige til at gå til, og som bestemt ikke kræver programmering på et særlig højt niveau. Det du spørger om kræver blot en inputbox og et enkelt lille loop, der looper over alle rækkerne...
Så enten har I alle 20 elever ikke fulgt ret godt med i undervisningen, eller så har undervisningen været meget ringe. Jeres problem er at I ved for lidt om at programmere... Tror I må finde en tutorial der viser jer lidt om hvordan man programmere - for så meget tid har jeg heller ikke. Eller spørg jeres lære - det virker som om opgaven er helt skudt ved siden af jeres niveau.
Alternativt, vis jeres kode, så skal jeg forsøge at rette lidt i den. Så hit med koden :o)
Sub test() Worksheets("database").Activate Dim tekst As String tekst = InputBox("Indtast søgeord") Dim data As range Set data = ActiveSheet.UsedRange Dim felt As range Set felt = data.Find(tekst) felt.Select Dim reg As Integer reg = 7043 reg = reg \ 1000 Worksheets("opret").range("c8") = reg
End Sub Sub test1() Dim svar As String Dim resultat As String Dim svare As Object
svar = InputBox("Indtast dit søgeord") With range("m2") resultat = range(.Offset(1, 1), .End(xlToLeft).End(xlDown)).Name = "Data" Set svare = Cells.Find(svar).Activate If Not svare Is Nothing Then firstaddress = svare.Address Do svare.Value = Application.CopyObjectsWithCells Worksheets("vis").Activate Insert svare.Value = vis Loop While svare Is Nothing And svare.Address <> firstaddress End If
vi vil oprette en inputbox hvor man kan indtaste et søgeord, hvorefter der bliver søgt efter ordet i arket old_database. Derefter skal man vælge et af de mange muligheder (som man gerne skulle kunne vælge imellem). Når man så har valgt en celle hvor ordet forekommer skal hele rækken kopieres ind i arket "vis"
Det var et forslag vores lærer gav os som vi så kunne arbejde ud fra- men det er lidt svært når vi ikke ved hvad det er vi har gang i. så bare glem test()
Vi regner med at det er kolonne G man skal søge i, men at det mare skal irke ligesom en almindelig søgning hvor man søger og erstatter et ord - så istedet søger og kopiere det over i et andet ark nr man har fundet det man søgte efter. kodn har vi skrevet udfra dels at optage en makro mens vi søger og erstatter og dels ved at bruge hjælpetjenesten i VBA'en
den første kode kunne vist søge, men den stoppede efter det først fundne ord og så i opret arket blev den kode, som ordet var tilknyttet, skrevet i felt c8, men vi kunne ikke rigtig arbejde videre derfra, så vi opgav koden
Indtil videre tak for hjælpen, vi kigger på det. Vi ligger det nok ud i morgen (vi er ved at være godt firkantet i øjnene, så vi stopper nok for i dag), så hvis du har lyst og tid kan du kigge på det imorgen. Men ellers mange tak. Tror egentlig problemet er at vi gør det for svært for os selv.
Det tror jeg også. Træd to skridt tilbage, og se på det igen. Drop "Range" hvis I ikke har styr på det, og lav et meget simpelt loop, der looper over alle de celler I vil undersøge. Til de kan I bruge Sheet("Arknavn").Cells(i, j).Value og lade i og j varierer ... i = række, j = kolonne
Hej alle jer fra HA Jeg sidder nøjagtigtig med de samme problemer som jeg da jeg også er så heldig at skulle løse den lækre opgave :-) Tor snakkede om et forum eller sådan noget hvor vi alle kunne diskutere opgaven. Er der nogen af jer der ved hvad det er for noget og hvis ja hvor man finder det henne??
Sub MinMacro() Dim i As Long Dim strSøgeord As String
Sheets("Sheet1").Select '<- Skift arknavnet ud med det der passer strSøgeord = InputBox("Hvad vil du søge efter", "Indtast søgeord") strSøgeod = LCase(strSøgeord)
For i = 1 To 61000 If LTrim(LCase(ActiveSheet.Cells(i, 7).Value)) = LTrim(LCase(strSøgeord)) Then MsgBox "Søgeord fundet i række " & i '<--Gem række nr 'i' der hvor den skal gemmes, f.eks. i et andet ark --> End If Next i
MsgBox "Søgning slut" End Sub
Så nemt er det faktisk! Jeg kan ikke forstå at I ikke selv kan nå frem til det på et vidergående edb-kursus..
Bemærk, at den søger på ABSOLUTTE ord - dvs. søger I på "He" vil den IKKe finde "Hej". Det kan let rettes, men for ikek at forvirre jer, har jeg lavet det så simpelt som muligt
Er ikke dumme vi er bare ikke gode til edb, da det ikke er det esentielle i vores uddannelse, men derimod økonomi - derfor prøver vi at rådgive os med eksperter som dig selv. Nå komplimenter til side. Vi har forsøgt at køre dit forslag til en søgefunktion, men den finder så bare søgeordet i celler hvor ordet ikke forekommer, plus at den kører alle 65536 rækker igennem. Så vi blev nød til at lukke excel ned da det ellers ville tage pænt lang tid. Men vi kan da glæde dig med at vi prøver at arbejde videre med dit forslag. Vi har dog overvejet at sætte en vbyesno eller vbyesnocancel for at man har mulighed for at stoppe søgningen undervejs. Er dette ikke en mulighed?
Men I kan finde sidste række i kolonnen ved følgende kode:
Dim ws As Worksheet Dim lLastRow As Long Set ws = Sheets("Sheet1") '<-- Ret arknavnet lLastRow = ws.Range("G" & Rows.Count).End(xlUp).Row
lLastrow indeholder nu den sidste række i kolonne G, og I kan nøjes med at loope til denn eværdi og ikke til 65536, altså
Sub MinMacro() Dim i As Long Dim strSøgeord As String Dim ws As Worksheet Dim lLastRow As Long
'Finder sidste række Set ws = Sheets("Sheet1") '<-- Ret arknavnet lLastRow = ws.Range("G" & Rows.Count).End(xlUp).Row Sheets("Sheet1").Select '<- Skift arknavnet ud med det der passer
'Henter søgeord strSøgeord = InputBox("Hvad vil du søge efter", "Indtast søgeord") strSøgeod = LCase(strSøgeord)
'Søger efter søgeord indtil sidste række nås For i = 1 To lLastrow If LTrim(LCase(ActiveSheet.Cells(i, 7).Value)) = LTrim(LCase(strSøgeord)) Then MsgBox "Søgeord fundet i række " & i '<-Gem række nr 'i' der hvor den skal gemmes, f.eks. i et andet ark -> End If Next i
MsgBox "Søgning slut" End Sub
Ovenstående kode finder det søgeord i indtaster!!! Det garanterer jeg, og forstår ikek hvad du mener med "men den finder så bare søgeordet i celler hvor ordet ikke forekommer"
NB: Jeg bebrejder skal ikke jer - jeg undres bare over, hvorfor I har fået en opgave I åbenbart ikke er klædt på til at løse...
Hvis du har fået svar nok så luk spørgsmålet ved at acceptere
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.