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

Cellen selecteren via VBA

Status
Niet open voor verdere reacties.

arvie76

Gebruiker
Lid geworden
14 sep 2016
Berichten
84
Hallo,

Ik ben bezig om het verwerken van voorraden en cap.planning doormiddel van macro's te automatiseren. Stapje voor stapje kom ik verder. Maar loop nu tegen probleem aan van het inlezen van de aangeleverde uren. Het is me al gelukt om doormiddel van een userform de actuele week en de gekozen locatie zichtbaar te maken en ook het bestand van deze locatie en week te openen.

Maar nu moet ik in dat geopende bestand(zie voorbeeld bestand) gegevens kopiëren naar de landelijke cap.planning. In de oude werkwijze staan in het bestand wat geopend wordt twee macro's(zie voorbeeld bestand) die de gegevens die ik nodig had kopieerde en ik plakte ze dan handmatig in de cap.planning. In twee stappen eerst de direct uren en daarna de indirecte uren. De range die geselecteerd/gekopieerd moest door middel van de macro's paste ik dan per locatie aan.

Ik wil nu in deze nieuw macro dat de cellen vanaf G8 en dan 5 kolommen naar rechts en alle regels die gegevens bevatten tot aan de totaal regel kopiëren.
Heb nu deze VBA wordt gestart vanuit een schakelbord/userform. Tot selectie werkt deze goed.

Code:
Private Sub okeKnopRooster_Click()

'controle op ingevulde locatie
If Me.WeeknrRooster.Value = "" Then
Me.WeeknrRooster.SetFocus
MsgBox "Je moet een het weeknr kiezen."
Exit Sub
End If
'controle op ingevulde locatie
If Me.LocactieRooster.Value = "" Then
Me.LocactieRooster.SetFocus
MsgBox "Je moet een locatie kiezen."
Exit Sub
End If
'Schrijft het gekozen weeknr en de locatie weg naar werkblad data cel N5 & N6
Worksheets("Data").Range("N5").Value = Me.WeeknrRooster.Value
Worksheets("Data").Range("N6").Value = Me.LocactieRooster.Value
'Filterd de cap.planning op basis van gekozen locatie
Application.Goto Range("week" & Val([Data!N5]))
ActiveSheet.Range("$A$7:$PR$82").AutoFilter Field:=4, Criteria1:= _
        Worksheets("data").Range("N6").Value
'opend het rooster van de gekozen locatie.
'Workbooks.Open Worksheets("data").Range("N7").Value & "Capaciteitsplanning" & " " & Worksheets("Data").Range("N6").Value & " " & "week " & Worksheets("data").Range("N5").Value & " " & "2019" & ".xlsm", ReadOnly:=True
    'Windows(2).WindowState = xlMinimized
    'Windows(1).WindowState = xlMaximized
    
'Open een ander bestand naast het bestand dat al open is.
'Een werkbook dat geopend wordt wordt automatisch het active werkbook.
Workbooks.Open Worksheets("Data").Range("N7").Value & "Capaciteitsplanning" & " " & Worksheets("Data").Range("N6").Value & " " & "week " & Worksheets("data").Range("N5").Value & " " & "2019" & ".xlsm", ReadOnly:=True
    'Kopieer de gegevens zoals al bekend
    'Sheets("Sjabloon " & Val([A4])).Select
    Range("G8").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    
    'Sluit het active werkbook.
    'Daardoor wordt het eerste bestand waarin deze macro staat
    'weer het active werkbook.
    ActiveWorkbook.Close
    
    
    
Unload Rooster

End Sub
 

Bijlagen

  • Sjabloon capaciteitsplanning blanco Voorbeeld.xlsm
    72 KB · Weergaven: 23
Laatst bewerkt:
Nu moet ik eerlijk toegeven dat ik niet veel van begrijp Maar vanaf G8 5 kolommen naar rechts en tot de laatst gevulde rij kopiëren doe je zo

Code:
Range(Range("g8").Resize(, 5), Range("g8").End(xlDown)).Copy
 
Thnx

Deze had ik ook al gevonden maar dan neemt hij de regel met de totalen ook mee. En die moet juist niet geselecteerd worden. Want in de landelijke cap.planning zit ook al een totaal telling.
 
maak de cellen leeg dan zal hij ze niet meer mee nemen
of anders

Code:
range ("g8:k33").copy
 
Laatst bewerkt:
Thnx

Dan heb ik een het bereik/range hard geprogrammeerd, maar bij de ene locatie zijn het maar 10 medewerkers dus ook minder regels gevuld en bij de andere locatie zijn het 40 medewerkers dus zijn het meer regels die geselecteerd moeten worden. Daarom wil ik dat hij automatisch de gegevens pakt tot de totalen. Deze totalen wil ik wel graag in het bron bestand laten staan.
 
Laatst bewerkt:
doe het dan zo, ik veronderstel dat de namen ingevuld worden. Plaats anders een relevant voorbeeld bestand
 

Bijlagen

  • Sjabloon capaciteitsplanning blanco Voorbeeld (1).xlsm
    71,9 KB · Weergaven: 22
Wat het na de copy worden moet heb ik niet naar gekeken.

Eesrt maar eens 'select'.

Code:
Sub Knop18_Klikken()
Range("b8", Range("b8").End(xlDown)).Offset(, 5).Resize(, 5).Select
End Sub

Maar aan zowel de code van @emields als die van mij heb je niets als alleen maar B8 gevuld is met een naam.

Dit lijkt me dan geschikter.
Code:
Sub Knop18_Klikken()
If Range("b8") > 0 Then Range("b8", Cells(Application.Max(8, Cells(32, 2).End(xlUp).Row), 2)).Offset(, 5).Resize(, 5).Select
End Sub
 
Laatst bewerkt:
Thnx voor meedenken

Hoi Emields & HSV

Jullie formule werkt goed zolang er voor de regel met totalen een blank regel staat, maar als ik het hele sjabloon vul met namen dan neemt selecteert hij ook de regel met totalen, wat dus niet wenselijk is.

Heb even verder zitten denken en heb gedeelte als volgt opgelost. In het sjabloon geef ik het bereik wat ik geselecteerd wil hebben een naam en benoem deze naar dan in de macro

Code:
Range("InzetVenlo").select
Selection.Copy

Dat werkt.

Maar als ik er een variabele van maark dus dat hij een gedeelte van de lijstnaam uit een cel moet halen loopt deze hierop vast.

Code:
Range("Inzet" & Val([C4])).Select
Selection.Copy

Iemand een idee.
 
Ja, die laatste van mij.
Of maak er een listobject van: de totaalrij wordt niet geteld in de databodyrange.
 
Laatst bewerkt:
Nieuwe variant

Hoi Heren,

Heb met behulp van andere VBA kenner. Volgende verkregen

Code:
Sub Selectie()

Dim Eindregel As Long

Sheets("Sjabloon").Activate
Range("G8").Select
ActiveCell.End(xlDown).Select
Eindregel = ActiveCell.Row
Eindregel = Eindregel - 1
Range(Cells(7, 7), Cells(Eindregel, 11)).Select

End Sub

Deze werkt goed en doet precies wat ik wil.

Mogelijk kunnen andere hier ook hun voordeel mee doen.
 
Laatst bewerkt:
Ja, ik zie het.
Het is een kwaliteitje hoor.
 
dat selecteert altijd de volledige range. Dan kun je natuurlijk ook een harde selectie doen.
ik heb mijn voorbeeld iets aangepast
 

Bijlagen

  • Sjabloon capaciteitsplanning blanco Voorbeeld (1) (1).xlsm
    73,5 KB · Weergaven: 21
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan