Rooster

Status
Niet open voor verdere reacties.

marcelvba

Gebruiker
Lid geworden
26 jul 2010
Berichten
40
Hallo iedereen,

Met alles wat ik hier bijgeleerd heb, ben ik begonnen aan het maken van een rooster. Zoveel mogelijk geautomatiseerd. Op zich gaat het goed maar heb het idee omslachtig bezig te zijn en me meer werk op mijn nek haal dan nodig. In het bijgevoegde sheetje staat een rooster. De rooster is wat dagen betreft, gewoon in te vullen in de sheet zelf. Maar het kan ook via de userform welke aan de userform urenstaat zit. Deze is te vinden door op de button achter de naam te klikken. (er is maar een actief).

Nu vul ik de textboxen met initialize en schrijf ze ook weer weg. Dit gaat prima, echte over 365 dgn en 13 (later 14) teamleden worden dit over de 10000 regels. Ik was bij Mei gebleven en bedacht me deze kwestie voor te leggen op dit forum. Wellicht kent iemand een oplossing om de textboxen sneller te laten vullen en weg te schrijven.


Zelf heb ik het geprobeert met for next, maar het feit dat de kolom aanduidingen met a, aa of bc zijn kwam ik niet tot een oplossing.

Alvast bedankt voor de moeite,

Marcel
 

Bijlagen

Hallo,

Ik heb een klein voorbeeldje toegevoegd. In het voorbeeldje probeer ik via een for.......next 2 textboxen te vullen uit de gele cellen, met een userform. Echter wil dit niet zo.....Waarschijnlijk kan de notatie textbox niet los gezien worden van het getal 1 of 2 in plaats van de waarde te halen uit de for waarde.

Misschien iemand een idee. Zoeken op het forum en het net bracht me geen resultaat.

Marcel
 

Bijlagen

marcelvba,

Zo werk je code ook (zeker in 2007), hij zal nog wel korter kunnen denk ik.
Je ben zo ook het flikkeren van het scherm kwijt. (rustiger voor de ogen)

Code:
Sub dag()
Dim username As String
Application.ScreenUpdating = False
username = InputBox("Op welke dag begint 1 januari")
Cells(2, 2).Value = username

  [B2].AutoFill Destination:=[B2:B33]
  [B33].Copy [E2]
    
  [E2].AutoFill Destination:=[E2:E30]
  [E30].Copy [H2]
    
  [H2].AutoFill Destination:=[H2:H33]
  [H33].Copy [K2]
    
  [K2].AutoFill Destination:=[K2:K32]
  [K32].Copy [N2]
    
  [N2].AutoFill Destination:=[N2:N33]
  [N33].Copy [Q2]
    
  [Q2].AutoFill Destination:=[Q2:Q32]
  [Q32].Copy [T2]
    
  [T2].AutoFill Destination:=[T2:T33]
  [T33].Copy [W2]
    
  [W2].AutoFill Destination:=[W2:W33]
  [W33].Copy [Z2]
   
  [Z2].AutoFill Destination:=[Z2:Z32]
  [Z32].Copy [AC2]
    
  [AC2].AutoFill Destination:=[AC2:AC33]
  [AC33].Copy [AF2]
    
  [AF2].AutoFill Destination:=[AF2:AF32]
  [AF32].Copy [AI2]
    
  [AI2].AutoFill Destination:=[AI2:AI32]
  [A1:C1].Select
Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
MarcelVBA,

Gebruik referentie Worksheet.cells(rijnummer, kolomnummer) om bijvoorbeeld in een for..next lus meer dan 26 kolommen te bereiken
let wel goed op, als je bijvoorbeeld bereik "B14:E36" selecteert, dat van dat bereik cells(1,1) "B14" is
Dus alleen als je naar het gehele werkblad refereert, komt cells(x,y) overeen met rij x, kolom y op je werkblad

Succes.


Verder gebruik ik deze functie wel eens om een getal om te zetten in kolomletter:

Code:
Function ColumntoNumber(Column As Long) As String
Dim str As String
Dim lngA As Long, lngB As Long
lngA = (Column - 1) Mod 26
lngB = (Fix((Column - 26 - 1) / 26)) Mod 26
If Column > 26 Then str = str + Chr(65 + lngB)
str = str + Chr(65 + lngA)
ColumntoNumber = str
End Function
 
Laatst bewerkt:
Hallo,

Bedankt voor de reacties.

De voorstellen heb ik uitgeprobeerd en tot de conclusie gekomen dat ik het over een andere boeg moet gooien. Toch heb ik in mijn database de voorstellen opgenomen voor de toekomst. Als ik weer wat verder ben.

Ik ben het anders gaan aanpakken en heb de basis ontwerp hieraan toegevoegd. Op zich gaat het lekker maar de hersenen kraken behoorlijk. Ik liep tegen een probleem aan waarvan ik dacht het onder controle te hebben, omdat ik het eerder aan de hand gehad heb en het ook toen met behulp van het forum opgelost heb. Helaas werkt het op een of andere manier niet.

Wanneer de userform geopend wordt door de button (uren verwerken) op blad 1 dan zijn daar een viertal comboboxen te zien (1-4). Deze worden gevuld met tijden uit blad2. Om geen komma getallen te krijgen heb ik bij "dropbuttonclick" de format hh:mm toegepast.

Code:
Private Sub ComboBox1_DropButtonClick()
  ComboBox1 = Format(ComboBox1.Value, "hh:mm")
End Sub

bij userform_initialize() heb ik ComboBox1 = Format(ComboBox1.Value, "hh:mm") toegepast.

Toch krijgt het userform het voor elkaar om komma getallen weer te geven.

de cellen waar de uren staan zijn in eigenschappen ingesteld als tijd "hh:mm"

Volgens mij heb ik alles gehad om het juist te krijgen, maar ik moet iets over het hoofd zien.

Wat ook apart is dat als ik dan de komma getal kies 0,5 (= 12:00) dan geeft de combobox 00:00!!

Kan iemand me ophelderen?

bedankt,

Marcel
 

Bijlagen

Laatst bewerkt door een moderator:
MarcelVBA,

"Combobox.Value" en "ListBox.Value" verwijzen naar de waarde die op het moment van het lopen van de VBA Macro geselecteerd is in het betreffende object(oftewel je Combobox of ListBox.)
Als bij het laden van het Userform de Combobox.value ( = leeg, want er is niets geselecteerd) wordt converteerd naar "hh:mm" gebeurt er dan ook niets.

De format van de cellen A1:A73 is wel "uu:mm", maar de waarde is een getal, bijvoorbeeld 0,5
je combobox leest de WAARDEN uit A1:A73 dus je krijgt inderdaad 0,xxx te zien.

Wat wel kan, is het volgende:
Voeg een kolom toe in "Blad2", Cel F1 met de volgende formule : =TEKST(A1;"uu:mm") en kopieer de formule in F1:F73

vervolgens pas je in je macro aan:
Code:
ComboBox1.List = Sheets("blad2").Range("f1:f73").Value
 
Laatst bewerkt:
MarcelVBA,

Kijk eens naar de aanpassing die ik heb gedaan bij de ComboBox1.
Test het formulier en je zal zien dat hij nu de tijden bij Tijd 1 weergeef zoals ze op Blad2 staan.

Ik heb de regel in de VBA uitgeschakeld en de Eigenschap van De ComboBox (RowSource aangepast)
Tevens laat ik onder aan je code zien hoe je het ook wat korter kunt schrijven.

Wat ook apart is dat als ik dan de komma getal kies 0,5 (= 12:00) dan geeft de combobox 00:00!!
Maak hier in Blad2 12:00:01 van, dan geeft hij wel 12:00 weer



Suc6
 

Bijlagen

Laatst bewerkt:
Hallo Marc XL & ExcelAmateur

Wat een openbaring wederom. Zoveel wegen die naar Rome leiden. En het zijn goede wegen, wat ze lopen goed. Ik heb jullie adviezen toegepast en ben uit de brand....

Dank jullie wel en ik kan weer verder naar de volgende uitdagingen!!!!

Marcel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan