Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil graag aan VBA macro maken die op basis van twee inputcellen (string en kolom) een regel kopieert naar een nieuw werkblad. Belangrijk daarbij is dat de zoekterm ook onderdeel van de inhoud van de cel mag zijn. Dus als de zoekterm 'konijn' is dan moet ook de regel met in de geselecteerde kolom 'konijnenbrood' gekopieerd worden.

Wat ik al gevonden of geprobeerd heb:

Sub CopyRowsAcross()
Dim i As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Blad2")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Blad3")

For i = 2 To ws1.Range("B65536").End(xlUp).Row


If ws1.Cells(i, 2) = "AA" Then ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)


Next i
End Sub

Alle reacties


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Zo te zien heb je deze code bijna 1 op 1 overgenomen van MrExcel.com. Snap je hem ook? Waar loop je vast, wat doet hij (niet) goed?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Daar heb je helemaal gelijk in. Ik begin het steeds beter te begrijpen (totaal geen ervaring met programmeren). Inmiddels ben ik er op een haar na! Als ik alleen de "AA" in de Instr formule nog kon vervangen door een zeg maar "valueSelector" oftwel een cel in Blad1 dan zou ik al heel tevreden zijn. Op één of andere werkt dat steeds niet...

Sub CopyRowsAcross3()
Dim i As Integer
Dim ws0 As Worksheet: Set ws0 = ThisWorkbook.Sheets("Blad1")
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Blad2")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Blad3")
Dim InSearchString As Integer
Dim SearchString As Integer


RangeSelector = ws0.Cells(2, 2) & 65536
ValueSelector = """" & ws0.Cells(2, 3) & """"
MsgBox (ValueSelector)

For i = 1 To ws1.Range(RangeSelector).End(xlUp).Row

InSearchString = InStr(1, ws1.Cells(i, 2), "AA")
If InSearchString <> 0 Then ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row + 1)

Next i
End Sub

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Het zou idd niet moeilijker moeten zijn dan "AA" vervangen door valueselector. EN dan? Wat betekent "Op een of andere manier werkt dat steeds niet"? Foutmeldingen kopieert hij het verkeerde of helemaal niks, wat wel, wat niet? Wat is de uitkomst va n valueselector? Waarom die toevoegingen van quotes?

Door jezelf die vragen te stellen zul je merken dat je of je probleem helderder kunt omschrijven en een oplossing zo gegeven is, maar nog waarschijnlijker: heb je het zelf opgelost voordat je een vraag kunt tikken. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland