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

knop met VBA functie

Status
Niet open voor verdere reacties.

moensk

Gebruiker
Lid geworden
23 jun 2013
Berichten
803
Ik heb 2 knoppen momenteel met VBA functies achter.
knop 1 is voor data op te halen en knop 2 is om de nieuwe data te verwerken.
ik heb beide functies nu achter mekaar gekleefd in 1 knop (zie hieronder een gedeelte)

probleem
deel 1 neemt 5" in beslag doch daar wacht hij niet op om deel 2 uit te voeren.
wat ervoor zorgt dat functies in deel 2 niet correct uitgevoerd worden
hoe kan ik ervoor zorgen dat deel 2 pas wordt uitgevoerd als deel 1 is afgewerkt ?

knop.png
 
HTML:
Private Sub CommandButton1_Click()
    
'openen excel met ODBC koppeling - bijwerken - sluiten
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    Set objWorkbook = objExcel.Workbooks.Open("\\fs1\logistiek\Planlijst_VRE_VRT.xlsx")
        objExcel.Workbooks("planlijst_VRE_VRT.xlsx").Worksheets("data_planlijst").ListObjects(1).QueryTable.Refresh False
        objExcel.Workbooks("planlijst_VRE_VRT.xlsx").Worksheets("data_chauffeurs").ListObjects(1).QueryTable.Refresh False
        objExcel.DisplayAlerts = False
        objWorkbook.Close True
        objExcel.Quit
        Set objExcel = Nothing
    'bijwerken query tabblad data in huidige excel
       ActiveWorkbook.Connections("Query - data_planlijst").Refresh
       ActiveWorkbook.Connections("Query - data_chauffeurs").Refresh
       
       
    ' bijwerken van opmerking met verlof chauffeurs
    ' Find the last non-blank cell in column A(5)
    lRow = Sheets("data").Cells(Rows.Count, 5).End(xlUp).Row
    
For i = 2 To lRow
    If Sheets("data").Cells(i, 9).Value <> "" Then
    For y = 2 To lRow
        If ((Sheets("data").Cells(y, 5).Value = Sheets("data").Cells(i, 5).Value) And (Sheets("data").Cells(y, 13).Value = Sheets("data").Cells(i, 13).Value)) Then
          Sheets("data").Cells(y, 9).Value = Sheets("data").Cells(i, 9).Value
        End If
    Next y
    End If
Next i


[A3:Z2000].ClearContents
Dim ar, ar1, j As Long, k As Long, z As Long
Dim at, at1, t As Long
Dim aq, aq1, q As Long
Dim ao, ao1, o As Long
Dim ax, ax1, x As Long
Dim av, av1, v As Long
Dim sv, b As Long, c00 As String, datum As Date

Dim R As Range

    ' selectie voor bakwagens
ar = Sheets("data").Cells(1).CurrentRegion
ReDim ar1(UBound(ar), 7)
    'selectie voor trekkers
at = Sheets("data").Cells(1).CurrentRegion
ReDim at1(UBound(at), 7)
    'selectie voor LZV
aq = Sheets("data").Cells(1).CurrentRegion
ReDim aq1(UBound(aq), 6)
    'selectie voor g wagens
ao = Sheets("data").Cells(1).CurrentRegion
ReDim ao1(UBound(ao), 6)
    ' selectie voor shuttle chauffeurs
ax = Sheets("data").Cells(1).CurrentRegion
ReDim ax1(UBound(ax), 6)
    'selectie voor zieken & verlof
av = Sheets("data").Cells(1).CurrentRegion
ReDim av1(UBound(av), 6)
 
Ik denk dat de queries op de achtergrond worden uitgevoerd. Doe het dus eens zo:
Code:
ActiveWorkbook.Connections("Query - data_planlijst").BackGroundQuery = False
ActiveWorkbook.Connections("Query - data_planlijst").Refresh

ActiveWorkbook.Connections("Query - data_chauffeurs").BackGroundQuery = False
ActiveWorkbook.Connections("Query - data_chauffeurs").Refresh
 
ik krijg dan foutmelding 438
op "ActiveWorkbook.Connections("Query - data_planlijst").BackgroundQuery = False"
 
Plaats je document.
 
De VBA code ervoor weet ik zo gauw even niet maar hier kan je ook het uitvoeren op de achtergrond uitschakelen:

BGQ.jpg

Per query dus.
 
als ik met 2 knoppen blijf werken kan ik dan in 2de knop een functie zetten dat de kleur van die knop verandert als script van knop 1 is afgewerkt.
dan kan ik zeggen dat als knop "gele" kleur heeft dan mag men hem aanklikken.
 
Waarom zou je met 2 knoppen werken om 1 proces af te handelen? Dan maak je het jezelf alleen maar lastiger.
Je kan veel beter doen wat ik eerder voorstelde.
 
Klopt, en qua VBA: 'XXXXXX.Refresh BackgroundQuery := False' zou denk ik moeten werken.
 
Edmoor,
het eerste deel van VBA opent - werkt query in andere excel bij (dit is een odbc koppeling) en sluit deze
nadien wordt deze data binnen gehaald in de excel
dit proces duurt even
in beide gevallen staat "vernieuwen op de achtergrond ingeschakeld" doch dit werkt niet

hij begint deel 2 in de VBA al uit te voeren alvorens deel 1 is afgewerkt
 
heb het overal uitgeschakeld doch krijg nog steeds foutmelding 438

knopp.png
 
Kijk nog eens goed naar #10.
 
Als je echte querytabellen gebruikt is je code overbodig. Bij het openen van het werkboek worden alle gegevens automatisch geaktualiseerd.

Waarom moeten wij alle namen van de chauffeurs weten ?
Gebruik bij voorkeur fantasie-data.
 
Laatst bewerkt:
Ai, chips, ik had het mis. Dit zou in ieder geval de foutmelding moeten verhelpen:

Code:
ActiveWorkbook.Connections("Query - data_planlijst").ODBCConnection.BackgroundQuery = False
ActiveWorkbook.Connections("Query - data_planlijst").Refresh
ActiveWorkbook.Connections("Query - data_chauffeurs").ODBCConnection.BackgroundQuery = False
ActiveWorkbook.Connections("Query - data_chauffeurs").Refresh
 
Die foutmelding geeft me wel wat meer hoop, die komt denk ik niet door mij.

Kun je je bestand eens sturen?
 
In dat plaatje is niet te zien om welke regel dat gaat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan