Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Macro voor zoeken in een lijst  (gelezen 19635 keer)

0 leden en 1 gast bekijken dit topic.

Offline Morrelbi

  • Lid
  • *
  • Berichten: 17
Macro voor zoeken in een lijst
« Gepost op: 13 september 2007, 17:56:57 »
Hallo

Wat ik zou willen is een macro die een lange lijst doorzoekt naar een naam.

Die naam kopier ik vanuit bv explorer of een spel en ik wil dat mijn macro dan die naam opzoekt in mijn exel lijst
(en er dan datum en uur en zo bijzet, maar dat is geen probleem)
het probleem is dat mijn macro steets opnieuw dezefde naam invult op het zoekscherm en niet die van het klembord.
Dit is de macro

Sub Zoeken()
'
' Zoeken Macro
' De macro is opgenomen op 13/09/2007 door Mario B
'
' Sneltoets: CTRL+z
'
    Cells.Find(What:="betty", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate
End Sub

Zoals u ziet gebruikt hij steeds de naam die ik gebruikte toen ik de macro opnam

Voor jullie is dit vast geen probleem, maar ik  ken maar weinig van macros en normaal gebruik ik dat niet

Kan iemand me een handje helpen AUB
groetjes Morrelbi
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows Me
Standaard Browser:Internet Explorer 6

Offline Morrelbi

  • Lid
  • *
  • Berichten: 17
macro voor naam te zoeken via klembord
« Reactie #1 Gepost op: 13 september 2007, 18:06:53 »
Hallo,

Wil iemand me even helpen AUB?
ik wil een macro die een lange lijst van woorden doorzoekt
Het woord dat ik zoek kopier ik van een website
Maar waar ik vast zit is dat mijn macro steeds de naam gebruikt van toen ik de macro gemaakt heb, en niet degene die ik gekopierd heb.
Zoals u ziet staat deze naam in de macro in plaats van "plakken" zoals ik hem opgenomen heb

Sub Zoeken()
'
' Zoeken Macro
' De macro is opgenomen op 13/09/2007 door Mario B
'
' Sneltoets: CTRL+z
'
    Cells.Find(What:="betty", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate
End Sub

Ik ken niet zoveel van exel en gebruik het zelden, maar dit zou héél handig zijn.

Groetjes
Morrelbi
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows Me
Standaard Browser:Internet Explorer 6

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Macro voor zoeken in een lijst
« Reactie #2 Gepost op: 13 september 2007, 19:36:58 »
Hallo morbillo,


Zo kan het inderdaad niet werken.

Je code zou er ongeveer zo moeten uitzien:

Eerst kopïeer je ergens een woord wat in het kladblok word gezet.
Daarna voer je de macro uit:

Sub Zoeken()
' Sneltoets: CTRL+z
Dim naam As Integer

Range("A1").Select  'selecteer een cel waarin het woord wordt geplakt
ActiveSheet.Paste 'plakt het woord in cel "A1"
   
naam = Range("A1").Value  'Deze formulering is fout, daar moet je een oplossing zoeken zodat de waarde naam deze van "A1" krijgt

    Cells.Find(What:=naam, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate
End Sub

Deze macro werkt niet, maar zo heb je toch een idee in welke richting je kan denken.

:) SoftAid :)       


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: macro voor naam te zoeken via klembord
« Reactie #3 Gepost op: 13 september 2007, 22:28:50 »
Tuurlijk willen we helpen Morrelbi!

Ik neem aan dat je een mogelijkheid wilt hebben om je zoekopdracht in te geven. Dit kan met een 'inputbox'. Vervolgens koppel je het ingevoerde aan een variabele en die plaats je in de plaats van je 'opgenomen' zoekopdracht...  (simpel toch?  ;D ;D Nee hoor, geintje! Je moet 't gewoon ff weten ;))
In code ziet het er dan zo uit...Sub Zoeken()
'
' Zoeken Macro
' De macro is opgenomen op 13/09/2007 door Mario B en aangevuld door Leo  ;-)
'
' Sneltoets: CTRL+z
Dim sZoekterm As String

    sZoekterm = Application.InputBox("Wat wil je vinden...?", "Zoeken", "zoekterm")

    Cells.Find(What:=sZoekterm, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate
       
End Sub

Zet deze code ipv je eigen code. Kom je zo weer verder?

Groet, Leo

EDIT: De sneltoetscombinatie Ctrl+z is naar mijn mening niet heel handig gekozen. Dit is namelijk een hele makkelijke standaard functie in Excel: 'ongedaan maken'. Die zou ik aanpassen als ik jou was ;)
______________________________

Groet, Leo

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: Macro voor zoeken in een lijst
« Reactie #4 Gepost op: 13 september 2007, 22:51:50 »
Hi, Morrelbi,
WELKOM op dit forum!

Informatie ophalen van het klembord gebeurt met "GetFromClipboard": ja, in VBA zijn de termen soms bijna "letterlijk gewoon Engels".
De procedure gebeurt enigszins via een omweg.
Nieuw Object aanmaken: zie lijn met "new"
Object "vullen": zie "GetFromClipboard"
Tekst er uit halen: "MyData.GetText"

Die tekst stoppen we dan in een variabele, bijvoorbeeld "txt". Heb je tevoren een bestand gekopieerd, dan zit er in het klembord geen geldige informatie en krijg je een foutmelding.

Dan gaan we op zoek naar de tekst die nu in de variabele "txt" zit. Soms kan ook dit nog mislopen, wanneer er bijvoorbeeld teveel tekst in de variabele zit: "on error resume next" is dus noodzakelijk.
Option Explicit

Sub get_from_clipboard_and_find()
'Erik Van Geit
'070913

'set reference to Microsoft Forms x.x Object Library
Dim MyData As Object
Dim txt As String
Dim c As Range

Set MyData = New DataObject
MyData.GetFromClipboard

On Error Resume Next
txt = Application.Clean(Trim(MyData.GetText))
On Error GoTo 0

    If txt = vbNullString Then
    MsgBox "Could not get valid information from the Clipboard!", 48, "ERROR"
    Exit Sub
    End If

    With Sheets("Sheet1")
   
    On Error Resume Next
    Set c = .Cells.Find(txt, .Cells(1, 1), xlFormulas, xlPart, xlByRows, xlNext, False)
    On Error GoTo 0

        If Not c Is Nothing Then
        'do something with c
        MsgBox "Found """ & txt & """" & vbLf & "on sheet " & .Name & " in cell " & c.Address(0, 0), 64, txt
        Else
        MsgBox """" & txt & """ not found", 64, "No results"
        End If

    End With

End Sub

Eer de code kan werken, is het nodig om in het VBEmenu (In de Visual Basic Editor, dus niet het Excelmenu) Extra/Verwijzingen iets aan te vinken, zoals in de code aangegeven is.'set reference to Microsoft Forms x.x Object LibraryJe zal in de lijst iets vinden dat lijkt op Microsoft Forms x.x Object Library
De "x.x" is dan bijvoorbeeld "2.0": dat hangt van je versie af.

beste groeten,
Erik

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: macro voor naam te zoeken via klembord
« Reactie #5 Gepost op: 13 september 2007, 22:55:44 »

Pas op:
deze codelijn
Cells.Find(...).Activatelevert jullie een "bug" op, wanneer het item niet wordt gevonden in je sheet: je kan namelijk niets "activeren" wat niet bestaat!

goeienacht!
Erik

Offline Morrelbi

  • Lid
  • *
  • Berichten: 17
Re: macro voor naam te zoeken via klembord
« Reactie #6 Gepost op: 13 september 2007, 23:43:06 »
Hartelijk bedankt !

Dit komt héél erg in de buurt van wat ik wou :)

Ik kan nu een naam copieren van een website en deze in de inputbox plakken en zoeken in mijn lijst.

Het enige verschil is dat ik wou dat exel dat zonder die inputbox doet, dus dat hij de naam van het klembord haalt en de naam opzoekt

Maar het is zeker een macro dat ik zal gebruiken.


Groetjes,
Morrelbi
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows Me
Standaard Browser:Internet Explorer 6

Offline Morrelbi

  • Lid
  • *
  • Berichten: 17
Re: Macro voor zoeken in een lijst
« Reactie #7 Gepost op: 14 september 2007, 02:24:22 »
Allereerst enorm bedankt voor jullie inspanningen

Helaas, mijn versie ivan exel is wat te oud denk ik
2000

die microsoft forms library is niet te vinden

Set MyData = New DataObject

hier foutmelding
MyData.GetFromClipboard

objectvariabele of blokvariabele with is niet ingesteld


ik heb vroeger wel wat visual basic gedaan en ik herriner me dat GetFromClipboard nogthans nog

Dat paperclipje heeft er blijkbaar ook nog nooit van gehoord  :)

Maar met de macro die in mijn andere post staat red ik het wel

ik kom dan uit op de naam die ik zoek.
Maar, dan moet ik eens 3 cellen naar links gaan en daar de huidige datum laten zetten
Hetzelfde met de huidige tijd 2 cellen naar links

wat ik vind is
ActiveCell.Offset(0, -5)
om relatief te verplaatsen, maar hoe zet ik daar nu datum en tijd in?

Ja, t'is mijn eerste dag met macros. Ik heb er al een stuk of zes gemaakt voor dat blad, maar deze is wat te moeilijk. Helaas is het ook degene die me het meeste tijd zou besparen....

Alvast bedankt voor alles

Morrelbi
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows Me
Standaard Browser:Internet Explorer 6

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: macro voor naam te zoeken via klembord
« Reactie #8 Gepost op: 14 september 2007, 07:21:05 »
Morrelbi, hierbij de code met de offset functie uit je andere vraag. Ik heb ook gelijk de opmerking van Erik ter harte genomen en een kleine error afhandeling toegevoegd.Sub Zoeken()
'
' Zoeken Macro
' De macro is opgenomen op 13/09/2007 door Mario B en aangevuld door Leo  ;-)
'
' Sneltoets: CTRL+z
Dim sZoekterm As String

    sZoekterm = Application.InputBox("Wat wil je vinden...?", "Zoeken", "zoekterm")

    On Error Resume Next
    Cells.Find(What:=sZoekterm, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate
    If Err.Number = 91 Then
        MsgBox "Zoekterm niet gevonden!", vbOKOnly + vbInformation, "Zoekfout"
        Exit Sub
    End If
    On Error GoTo 0

    ActiveCell.Offset(, -3).Value = Date
    ActiveCell.Offset(, -2).Value = Format(Time, "hh:mm")

End Sub

Let er wel bij op dat de 'doorzochte kolom' NIET kolom A, B of C mag zijn. Dan zal de code hier óók op buggen... (ivm offset(,-3))

Groet, Leo

EDIT: Erik, 't is weer een fraai stukkie code in de andere post dat je hebt geschreven!
______________________________

Groet, Leo

Offline Morrelbi

  • Lid
  • *
  • Berichten: 17
Re: Macro voor zoeken in een lijst
« Reactie #9 Gepost op: 14 september 2007, 10:34:11 »

Iedereen Hartelijk bedankt !

Alles werkt nu prima

Echt een super Forum  :)
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows Me
Standaard Browser:Internet Explorer 6

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Macro voor zoeken in een lijst
« Reactie #10 Gepost op: 14 september 2007, 11:20:43 »
Namens iedereen... Graag gedaan! ;)

Enne... voor wat betreft
Citaat
Echt een super Forum 
Zegt het voort!!!  ;D

Groet, Leo
______________________________

Groet, Leo

 


www.combell.com