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

visual basic script

Status
Niet open voor verdere reacties.

moensk

Gebruiker
Lid geworden
23 jun 2013
Berichten
712
in bijlage een excel waarbij script niet werkt
gegevens in tabblad "data" komen via een ODBC koppeling...
ligt het probleem bij de datum notatie ?

Code:
Sub planlijst()

'opbouwen planlijst - inzamelen gegevens

Dim ar, arl, j, t As Long
Dim rowNumber, arraySize As Integer

ar = Sheets("data").Cells(1).CurrentRegion
ReDim arl(UBound(ar), 10)


rowNumber = 7
For j = 2 To UBound(ar)
    If ar(j, 5) = Sheets("planlijst").Range("C1").Value And ar(j, 26) = "D" And ar(j, 25) = "DUS" Then
        arl(t, 1) = ar(j, 1) 'wagennr
        arl(t, 2) = ar(j, 28) 'chauffeursnaam
        arl(t, 3) = ar(j, 27) 'nr plaat
        arl(t, 4) = ar(j, 30) 'prive gsm
        arl(t, 5) = ar(j, 31) 'gsm VRT
        arl(t, 6) = ar(j, 6)  'vertrek uur VRT
        arl(t, 7) = ar(j, 6)  'vertrek uur VRE
        arl(t, 8) = ar(j, 7)  'info rit
        arl(t, 9) = ar(j, 12) 'trailer
        arl(t, 10) = ar(j, 3) 'Rit ID
        t = t + 1
        arraySize = t
    End If
Next j
End Sub
 

Bijlagen

  • Planlijst_test.xlsm
    36,4 KB · Weergaven: 38
De macro van de knop verwijst naar : "Planlijst_test.xlsm!planlijst_opbouwen", terwijl de macro moet zijn : Planlijst_test.xlsm!planlijst.

Script doet inderdaad niets, maar wij hebben geen toegang tot de ODBC Database.
Heb je een foutmelding, zoja welke ?

Groet,

Joske
 
De macro geeft hier in ieder geval geen foutmelding, maar hij doet ook niks anders dan een array aanpassing.
Daarnaast is VB Script iets heel anders dan VBA, maar dat terzijde.
 
Laatst bewerkt:
ik heb enkele fictieve rijen gevuld in tabblad "data" ...
het tabblad "planlijst" vanaf rij 7 zou moeten gevuld worden dat is de bedoeling
 
Maar je schrijft helemaal niets naar dat blad.
Je moet dan dus na het vullen van de array elementen de gewenste regel(s) er mee vullen.
 
bedankt voor tip Edmoor
gevonden, volgende toegevoegd onder next j
Code:
Sheets("planlijst").Cells(rowNumber, 1).Resize(UBound(arl) + 1, UBound(arl, 2) + 1) = arl
 
Juist :thumb:
 
Edmoor,
in "data" (de odbc koppeling daar komt mijn datum binnen onder de vorm 2019-04-26 deze opmaak komt niet overeen met opmaak van datum veld C1 (26/04/2019)
had kolom in data op d/mm/jjjj gezet doch hij past niet automatisch de waarde in de cel aan waardoor script niet werkt
advies aub
 
Waarschijnlijk komt die datum uit de ODBC koppeling binnen als tekst en niet als echte datum.
 
klopt maar hoe maak ik daar dan datum veld van met de juiste opmaak ?
 
Als de ODBC koppeling daar geen mogelijkheid voor biedt kan dat alleen met een macro die wordt uitgevoerd als het verversen van de koppeling gereed is.
 
Laatst bewerkt:
Kijk eerst eens naar het verschil tussen de Ritstartdatum en de Riteinddatum.
De eerste is wel een echte datum en de tweede niet.
Als dat beide uit de ODBC koppeling komt kan je daar denk ik wel vinden wat te doen.
Uiteraard is er ook wel een simpel scriptje voor te maken, maar als de ODBC het kan is dat niet nodig.
 
Laatst bewerkt:
hoe moet ik script aanpassen :
tussen elke nieuwe trucknr (kolom B) moet er een lege rij ingevoerd worden

Code:
Sub planlijst()

'opbouwen planlijst - inzamelen gegevens

Dim ar, arl, j, t As Long
Dim rowNumber, arraySize As Integer

ar = Sheets("data").Cells(1).CurrentRegion
ReDim arl(UBound(ar), 10)


rowNumber = 7
For j = 2 To UBound(ar)
    If ar(j, 5) = Sheets("planlijst").Range("C1").Value And ar(j, 26) = "D" And ar(j, 25) = "DUS" Then
        arl(t, 1) = ar(j, 1) 'wagennr
        arl(t, 2) = ar(j, 28) 'chauffeursnaam
        arl(t, 3) = ar(j, 29) 'nr plaat
        arl(t, 4) = ar(j, 30) 'prive gsm
        arl(t, 5) = ar(j, 31) 'gsm VRT
        arl(t, 6) = ar(j, 6)  'vertrek uur VRT
        arl(t, 7) = ar(j, 6)  'vertrek uur VRE
        arl(t, 8) = ar(j, 7)  'info rit
        arl(t, 9) = ar(j, 12) 'trailer
        arl(t, 10) = ar(j, 3) 'Rit ID
        t = t + 1
        arraySize = t
    End If
Next j
Sheets("planlijst").Cells(rowNumber, 1).Resize(UBound(arl) + 1, UBound(arl, 2) + 1) = arl

    Range("B7:M38").Select
    ActiveWorkbook.Worksheets("planlijst").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("planlijst").Sort.SortFields.Add2 Key:=Range( _
        "B7:B20"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("planlijst").Sort.SortFields.Add2 Key:=Range( _
         "G7:G20"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
         xlSortNormal
    With ActiveWorkbook.Worksheets("planlijst").Sort
        .SetRange Range("B6:M20")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 

Bijlagen

  • Planlijst_test.xlsm
    44,4 KB · Weergaven: 30
Bv ipv de sub planlijst.

Code:
Sub VenA()
  Dim ar, arl, j As Long, t As Long, sr As Long, c00 As String
  ar = Sheets("data").ListObjects(1).DataBodyRange
  sr = 7
  With Sheets("Planlijst")
    .Range("A" & sr & ":M" & Application.Max(sr, .Cells(Rows.Count, 2).End(xlUp).Row)).ClearContents
    For j = 1 To UBound(ar)
      If ar(j, 5) = .Range("C1").Value And ar(j, 26) = "D" And ar(j, 25) = "DUS" Then
        c00 = c00 & j & "|"
        t = t + 1
      End If
    Next j
    .Cells(sr, 2).Resize(t, 10) = Application.Transpose(Application.Index(ar, Split(c00, "|"), Application.Transpose(Array(1, 28, 29, 30, 31, 6, 6, 7, 12, 3))))
    With .Cells(sr - 1, 1).CurrentRegion
      .Sort .Cells(1, 2), , .Cells(1, 7), , , , , xlYes
      For j = .Rows.Count To 3 Step -1
        If .Cells(j, 2) <> .Cells(j - 1, 2) Then .Cells(j, 2).EntireRow.Insert
      Next j
    End With
  End With
End Sub
 
Laatst bewerkt:
VenA werkt super, snap hem niet direct maar dat ga ik straks grondiger bestuderen.
 
Laatst bewerkt:
VenA,
er zit een clear opdracht in
hoe kan ik deze beperken in rijen, vanaf rij 44 komt er tekst te staan die niet mag verwijdert (gecleard) worden
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan