• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Automatisch rij verplaatsen naar ander blad bij bepaalde input

Status
Niet open voor verdere reacties.

jazzvb

Gebruiker
Lid geworden
30 okt 2005
Berichten
89
Hallo,

In een overzicht met gegevens (kolom A t/m E, en continu toevoegend naar beneden), wil ik graag dat een rij bij een specifieke input (Afgerond) in een cel in kolom E, wordt verplaatst naar een ander tabblad. Ook al staat het internet vol met codes in VBA, toch lukte het niet. Nu heb ik eindelijk een code gevonden die wel werkt maar daarvoor moet je iedere keer op de 'play button' in de macro klikken om het uit te voeren, terwijl ik liever heb dat het automatisch gaat.

Wil iemand uitleggen wat ik moet doen om na de input in kolom E de betreffende rij met Enter/pijltje/muisklik elders, automatisch te verplaatsen naar het andere tabblad?

Wat ik gedaan heb:
1. tabblad open met rij die verplaatst moet worden > met rechtermuisklik op dat tabblad > Programmacode weergeven...
2. deze code ingevoerd:
Sub Cheezy()
'Updated by ***ools for Excel 2017/8/28
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim J As Long
Dim K As Long
I = Worksheets("Actielijst").UsedRange.Rows.Count
J = Worksheets("Afgerond").UsedRange.Rows.Count
If J = 1 Then
If Application.WorksheetFunction.CountA(Worksheets("Afgerond").UsedRange) = 0 Then J = 0
End If
Set xRg = Worksheets("Actielijst").Range("E1:E" & I)
On Error Resume Next
Application.ScreenUpdating = False
For K = 1 To xRg.Count
If CStr(xRg(K).Value) = "Afgerond" Then
xRg(K).EntireRow.Copy Destination:=Worksheets("Afgerond").Range("A" & J + 1)
xRg(K).EntireRow.Delete
If CStr(xRg(K).Value) = "Afgerond" Then
K = K - 1
End If
J = J + 1
End If
Next
Application.ScreenUpdating = True
End Sub

3. dit opgeslagen > en op de play button (=F5?) geklikt

Bij voorbaat dank,
jazz
 
moeten we dat zelf maken of ga je een voorbeeld plaatsen?
 
En codetags.
 
Voor de trigger.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

[COLOR="#FF0000"]hier jouw code[/COLOR]

End Sub

Het kan wel allemaal wat korter/eenvoudiger.
 
Ik wil best een voorbeeld plaatsen of codetags, maar ik heb geen flauw idee wat voor voorbeeld dat moet zijn en wat codetags zijn.

@AD1957, als ik exact doe wat er staat (de hele code tussen die twee regels zetten), dan krijg ik een foutmelding; dat er alleen tekst na End Sub kan staan. Er staat dan ook 2x End Sub onder elkaar.
 
Ik wil best een voorbeeld plaatsen of codetags, maar ik heb geen flauw idee wat voor voorbeeld dat moet zijn en wat codetags zijn.
Dan heb je sinds 2005 de forum regels al niet gelezen.
Daar staat het duidelijk uitgelegd.
Klik op de link in mijn handtekening.
 
2005 alweer... da's lang geleden. inmiddels wel de pagina over codetags gelezen en de hashtag gebruikt:

Code:
Sub Cheezy()
'Updated by ***ools for Excel 2017/8/28
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim J As Long
Dim K As Long
I = Worksheets("Actielijst").UsedRange.Rows.Count
J = Worksheets("Afgerond").UsedRange.Rows.Count
If J = 1 Then
If Application.WorksheetFunction.CountA(Worksheets("Afgerond").UsedRange) = 0 Then J = 0
End If
Set xRg = Worksheets("Actielijst").Range("E1:E" & I)
On Error Resume Next
Application.ScreenUpdating = False
For K = 1 To xRg.Count
If CStr(xRg(K).Value) = "Afgerond" Then
xRg(K).EntireRow.Copy Destination:=Worksheets("Afgerond").Range("A" & J + 1)
xRg(K).EntireRow.Delete
If CStr(xRg(K).Value) = "Afgerond" Then
K = K - 1
End If
J = J + 1
End If
Next
Application.ScreenUpdating = True
End Sub

@AD1957, dan gebeurt er nog steeds niks.

@emields, dat werkt wel, maar dan moet je zo'n keuzemenu gebruiken, dat vind ik omslachtig.

Is het nodig om in het VBA-scherm op de playknop te drukken? Dan opent er namelijk een klein venster (macro?) waarin je een naam moet geven en dat moet opslaan. Daar kom ik ook niet verder mee.

Ik ben een leek in programmeren, maar als ik iets (code) exact kopieer en alleen de namen aanpas, dan moet het toch werken? dat begrijp ik niet.
 
Dit is minder omslachtig, enkel dubbelklikken in kolom E

Anders moet je maar een voorbeeldplaatsen dat aan uw bestand voldoet.
 

Bijlagen

Dit is wat we hebben gemaakt. Met die code erbij (plus wat aanpassingen door jullie tips) had ik dus verwacht dat bij het intikken van het woord Afgerond (en Enter/muisklik elders) in kolom E, die hele rij automatisch naar het tabblad Afgerond zou springen. Volgens mij heb ik alles netjes aangepast naar ons eigen sheet.
 

Bijlagen

mooi dat je een voorbeeld geeft zonder okk maar 1 letter code in. Is een XLSX bestand kan dus geen code bevatten.
 
dag emields, bedoel je een andere code dan die ik op 22 februari had gepost? is het beter als ik het bestand opsla met een andere extensie? of werkt dat zo niet?
 
In #11 heb je een bestand geplaatst met xlsx extensie. zulke bestanden kunnen geen macro bevatten.

daarvoor moet je opslagen in xlsm of xlsb.
 
Ah, zie dat nu ook in jouw excel. Ik heb er een kolom aan toegevoegd omdat we naast 'Afgerond' ook Loopt en Onbekend hebben (hoeft niet verplaatst te worden). Ik heb dat aan weten te passen zodat het nog werkt (toch nog iets geleerd :D). In deze regel in de VBA:
Code:
If Not Intersect(Target, [f2:f100]) Is Nothing Then
heb ik van e2:e100 > f2:f100 gemaakt.
Wat betekent die 100 eigenlijk? Zou ik die moeten aanpassen als we de 100 acties zijn gepasseerd?

Daarna heb ik de opmaak aangepast en 2 rijen erboven toegevoegd en daar ging het weer mis. Ik heb zitten speuren en wat zitten proberen maar een simpele verandering van letters en cijfers lijkt niet de oplossing. Weet ook niet of het ermee te maken heeft dat ik een extra tabblad heb toegevoegd (gok van niet). Ik vind het moeilijke materie... In ieder geval is de bijlage zoals het eruit ziet. En ik ben afgestapt van het idee om geen keuzemenu te gebruiken. Dat werkt goed en ben daar al heel blij mee.

Bedankt voor je hulp en tijd
 

Bijlagen

da's niet handig, sorry. ben wel weer een stapje verder gekomen. het verplaatsen van de rij werkt een beetje (meer dan mijn vorige gepruts), ook na de nieuwe opmaak. de eerste kolom in tabblad Actielijst is een datumkolom, en die kolom wordt niet meegenomen naar het tabblad Afgerond. komt dat omdat ik een kolom heb toegevoegd? ik krijg het niet voor elkaar om dus als het ware 5 kolommen te laten verplaatsen.

daarnaast viel het me op dat na een stuk of 20 rijen het keuzevakje ophoudt. kan ik instellen naar een langere reeks?
 

Bijlagen

Gezien de tijd die jij en anderen hieraan bezig zijn: wat is er mis met selekteren/knippen/selekteren/plakken ?
 
echt enorm bedankt, @emields! daar was ik never nooit alleen uitgekomen. ik ben hier heel blij mee. ook met de extra uitleg. dat is nog abracadabra, maar gaat me wel helpen om de volgende keer weer een stap verder te komen, omdat het dan meer herkenbaar wordt. na regen komt overduidelijk zonneschijn : ).

en dat is waarom ik door heb gevraagd, @snb. dit vind ik moeilijke, doch leuke, materie en daarom wilde ik niet opgeven (gelukkig emields ook niet). met zijn extra uitleg erbij, ben ik helemaal 'spekkoper'. en waarom niet knippen en plakken? het moet niet te makkelijk worden natuurlijk ; )

nogmaals dank!
jazz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan