• 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.

Ingegeven data verplaatsen naar sheets en eigen blad

Status
Niet open voor verdere reacties.

Perlut

Gebruiker
Lid geworden
24 jun 2015
Berichten
33
Hallo,

Ik zoek een macro wanneer de data: "Datum" (G6); "Lotcode" (H6);"Houdbaarheid (I6);"In gebruik" (J6) en "getuigestaal" (K6)
zijn ingevuld en dan klikt men op de knop "BHT" dan zou de data naar het blad "BHT" gekopieerd moeten worden op de eerst volgende lege lijn.
maar ook H6 in D4 en I6 naar E4, indien er al data staat in D4 en E4 zou deze moeten overschreven worden.

Bij klikken op een knop mogen de cellen G6;H6;I6;K6 niet leeg zijn. (melding)

Wanneer ik een voorbeeld heb van 1 knop zoek ik uit hoe verder kan met de andere knoppen.

Alvast bedankt,

Per Lut
 

Bijlagen

  • additieven.xlsm
    21,5 KB · Weergaven: 32
Hallo,
Inderdaad, zo zou het moeten werken.
Morgen probeer ik de andere knoppen ook te programmeren.

Hartelijk bedankt,
Zo kom ik verder.
Anders laat ik een seintje.

Groetjes,
Per Lut
 
Ik heb het voorbeeld net iets aangepast. Er stonden wat overbodigheden in.
 
Bedankt, Ik bekijk het en laat iets weten als ik verder kan.

Per Lut
 
Ik heb er nog een voorbeeldje bij gedaan hoe je in plaats van Shapes ook een echte knop kan gebruiken. Die werkt visueel ook als een knop. Je kan dus zien of hij wel of niet wordt ingedrukt. Bij een Shape is dat niet het geval. Tevens wordt bij een knop de macro gestart als je na het indrukken de knop los laat (UpClick). Bij een Shape gebeurt dat al wanneer je de muisknop indrukt (DownClick).

Tevens de shapes d.m.v. een simpele macro allemaal even groot gemaakt.
 
Laatst bewerkt:
Hallo,

Het programmeren van de knoppen is gelukt.
Ik heb meteen ook achter de code gezet dat na versturen van de laatste data de cellen terug leeg komen.
Had per ongeluk dubbel geklikt en de lijn werd 2 keer ingevuld.

Bedankt voor de start.

bestand in bijlage.

Groeten
Per Lut
 

Bijlagen

  • additieven_af.xlsm
    84,9 KB · Weergaven: 26
Prima. Maar voor het legen van die cellen kan je volstaan met dit:
Range("G6:K8").Clear

Je hebt achter ieder knop vrijwel dezelfde code staan.
Dat kan ook met 1 routine die 1 of meerdere parameters meegeeft.

Je knoppen zijn niet allemaal even groot.
Dat zou ik wel doen omdat het er dan netter uit zit.
 
Laatst bewerkt:
Waarom wil je 8 knoppen? De waarde is toch afhankelijk van het begin van de 'Lotcode'?

Voor 7 van de 8 werkt de codering op basis van de eerste twee letters van de tabnamen alleen met 'ANTI FOAM" wijk je af. Doe je dit niet dan kan je deze proberen.

Code:
Option Base 1
Sub VenA()
ReDim ar1(Sheets.Count, 2)
For j = 1 To Sheets.Count
    ar1(j, 1) = Left(LCase(Sheets(j).Name), 2)
    ar1(j, 2) = Sheets(j).Name
Next j
With Sheets("In gebruik")
    If Not Application.CountA(.[G6:K6]) = 5 Then
        MsgBox "Niet alle verplichte cellen zijn ingevuld", , "LET OP"
        Exit Sub
        Else
        For jj = 1 To UBound(ar1)
            If LCase(Left(.[H6], 2)) = ar1(jj, 1) Then
             b = True
                lr = Sheets(ar1(jj, 2)).Cells(Sheets(ar1(jj, 2)).Rows.Count, "A").End(xlUp).Row + 1
                Sheets(ar1(jj, 2)).Cells(lr, 1).Resize(1, 5) = .[G6:K6].Value
            End If
        Next jj
    End If
    If b Then
        .[G6:K6].ClearContents
        Else
            MsgBox "de beginleters van de codering zijn niet correct"
            Application.Goto .[H6]
    End If
End With
End Sub
 

Bijlagen

  • additieven_af.xlsb
    65 KB · Weergaven: 21
Leuke code @VenA.

Toch nog een kleinigheidje.
Code:
For jj = 1 To UBound(ar1)
            If LCase(Left(.range("H6"), 2)) = ar1(jj, 1) Then
             b = True
                [COLOR=#FF0000]Sheets(ar1(jj, 2)).Cells(rows.count, 1).end(xlUp).offset(1).Resize(1, 5) = .Range("G6:K6").Value[/COLOR]
            End If
        Next jj
Het gebruik van haken staat wel deftig, maar is trager dan een uitgeschreven range.

Of iets eenvoudiger geschreven.
Code:
Option Explicit
Sub hsv()
Dim i As Long, b As Boolean
b = false
With Sheets("In gebruik")
    If Not Application.CountA(.range("G6:K6")) = 5 Then
        MsgBox "Niet alle verplichte cellen zijn ingevuld", , "LET OP"
        Exit Sub
        Else
        For i = 2 To Sheets.Count
            If LCase(Left(.Range("H6"), 2)) = Left(LCase(Sheets(i).Name), 2) Then
               b = True
                Sheets(i).Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(1, 5) = .Range("G6:K6").Value
                .Range("G6:K6").ClearContents
            End If
        Next i
    End If
    If b = False Then MsgBox "de beginleters van de codering zijn niet correct"
            Application.Goto .Range("H6")
End With
End Sub
 
Laatst bewerkt:
Op bepaalde buitenlandse fora wordt het vaak geschreven door MVP's met grote naam dat het minstens 4x trager is.
Dan neem ik dat maar voor lief.
Ik zal het ooit eens testen.

Edit: @VenA heeft het bericht weer verwijderd.
 
@HSV

Ja er wordt veel geschreven.
Wat dan vergeten wordt is dat Cells(j,jj) 'sneller' is dan Range("A30")
De snelheid van de code van al deze schrijvers is niet afhankelijk van [], range() of cells(); dat is allemaal peanuts.
De logica, de struktuur van gegevens, het aantal volatile funkties, het werken in het werkgeheugen is veel bepalender.
 
Laatst bewerkt:
Bedankt @snb voor dit verhelderend schrijven.

Dat cells(j,jj) sneller is heb ik ook gelezen, maar in het gebruik grijp ik vaak naar range.
In het geheugen schrijven heeft mijn voorkeur, maar ook eenvoudige codes zonder al teveel lussen.
 
Als snelheids'verschillen' op millisecondennivo pas duidelijk worden na 50000 herhalingen spreek ik liever van 'geen verschil'.
 
@HSV en @snb
Edit: @VenA heeft het bericht weer verwijderd.
Sorry, weet ik veel dat er soms zo snel een reactie kan komen.:cool: Eerlijk gezegd weet ik niet wat de letterlijke vraag/opmerking was. Maar had bedacht om het zelf even te testen. En de post weer weggehaald.

De resultaten van het het testje [] en range op 50000 cellen gaf optioneel geen verschil.

In het geheugen schrijven heeft mijn voorkeur, maar ook eenvoudige codes zonder al teveel lussen.
De lussen eruit slopen blijft altijd een lastige:confused:

Beiden in iedergeval bedankt voor de reactie op mijn niet geplaatste reactie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan