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

Workbooks.Open Filename:= werkt niet naar wens

Status
Niet open voor verdere reacties.
Verdiep je eerst eens in het verschil in gebruik van een funktie en een macro. Nu gooi je beide door elkaar.
Probeer te begrijpen wat de code doet, in plaats van via uitproberen.
Pak desnoods een goed boek. Een probeer niet op nivo 5 te programmeren als je nivo 1 t/m 4 nog niet in de vingers hebt.
 
Hoe doe je dat precies?

Want je moet weten dat een functie niet alles kan wat een Sub wel kan.

Code:
=startwk(LINKS($B7;6);E$4;$E$3;$E$2)
Deze aanroep van de functie staat in iedere cel waarin een "X" wordt geplaats als het bestand aanwezig is.

Is het soms niet mogelijk om een Sub aan te roepen vanuit een Sub?

Wim
 
Functies die je gebruikt in cellen kunnen enkel een resultaat berekenen en weergeven.

Geen opmaak instellen of veranderen, in het algemeen geen dingen veranderen aan de Excel omgeving (iets openen, naar een andere sheet gaan, enz.)
 
Verdiep je eerst eens in het verschil in gebruik van een funktie en een macro. Nu gooi je beide door elkaar.
Probeer te begrijpen wat de code doet, in plaats van via uitproberen.
Pak desnoods een goed boek. Een probeer niet op nivo 5 te programmeren als je nivo 1 t/m 4 nog niet in de vingers hebt.

Ik dacht dat helpmij.nl mij kan helpen. Ik ben al lang geholpen met steeds meer adviezen echter geeft dat nog geen oplossing. Dus hulp is altijd op z'n plaats. Wellicht kan jij me even snel het veschil tussen een macro en funktie uitleggen zodat ik het begrijp.

Alvast bedankt.

Wim
 
Functies die je gebruikt in cellen kunnen enkel een resultaat berekenen en weergeven.

Geen opmaak instellen of veranderen, in het algemeen geen dingen veranderen aan de Excel omgeving (iets openen, naar een andere sheet gaan, enz.)

Dus dan maak ik goed gebruik van Funktie en Sub.
In de Funktei wordt de waarde van de cel vastgesteld.
In de Sub's doe ik allerlei andere zaken zoals openen.

Maar ik weet nogsteeds niet waarom het niet werkt.
 
Je start van een functie die andere Sub's aanroept. Die subs zullen niet werken aangezien ze aangeroepen worden vanuit een functie in een cel in Excel.
 
Je start van een functie die andere Sub's aanroept. Die subs zullen niet werken aangezien ze aangeroepen worden vanuit een functie in een cel in Excel.

Ik ben het bijna met je eens.
De eerste Sub 'Private Sub wkstaat(c0)' wordt wel uitgevoerd want ik krijg keurig netjes een "X" in de cel.
De tweede Sub 'Private Sub Ophalen_Uren(c0)' die wordt aangeroepen vanuit de eerste Sub doet niet wat hij moet doen.

Ik zoek dus nogsteeds naar een oplossing om ook de tweede Sub te laten doen wat hij moet doen.

Zie je misschien kans om dat voor mij uit te werken zonder dat we steeds heen en weer blijven gaan.

Wim
 
We zijn nu al zolang bezig, is er dan niemand die mij nog kan helpen?

Ik doe ook mijn best om andere te helpen, schept mij zeer veel genoegen, dus graag ook mij helpen.
Als niemand mijn probleem kan oplossen laat het dan ook even weten.
Stoppen met Helpmij.nl zal ik niet doen, veel te leerzaam.

Please

Wim
 
Zo moeilijk is dat nu toch ook niet hé. Je kan jouw code gebruiken, alleen niet onder de vorm van een functie. Dus wel met een command button.of iets dergelijks. Ik dacht dat je die stap wel zelf zou zetten, gegeven dat je de code al had en gegeven dat ik al zei dat het niet in een functie gaat.
 
Zo moeilijk is dat nu toch ook niet hé. Je kan jouw code gebruiken, alleen niet onder de vorm van een functie. Dus wel met een command button.of iets dergelijks. Ik dacht dat je die stap wel zelf zou zetten, gegeven dat je de code al had en gegeven dat ik al zei dat het niet in een functie gaat.

Oke, ik heb alles nu omgezet naar een sub die wordt opgestart met een knop.

Code:
Sub Macro1()
    Dim lRij As Integer
    Dim lPad As String
    Dim BRij As String
    Dim Zoek As String
    Dim uRij As Integer
    Dim PIT(20) As String
    Dim Tot(20) As Variant
    Dim Aanv(20) As String
    Dim Tel As Integer
    
    Dim BestVan As String
    Dim BestNaar As String
    
    Zoek = InputBox("Voor welke jaar/maand/week moet worden opgehaald")
    
    lPad = "H:\Helpmij.nl\"
    BestNaar = lPad & "Workbooks_WimenBeer.xls"
    
    lRij = 7
    BRij = Worksheets("Controlestaat").Range("B" & lRij).Value
    
    While BRij <> ""
        If Worksheets("Controlestaat").Range("E" & lRij).Value = "X" Then
            BestVan = lPad & BRij & Zoek & ".xls"
            Workbooks.Open (BestVan)
            Tel = 0
            For uRij = 10 To 27
                If Worksheets("Blad1").Range("C" & uRij).Value <> 0 Then
                    Tel = Tel + 1
                    PIT(Tel) = Worksheets("Blad1").Range("B" & uRij)
                    Tot(Tel) = Worksheets("Blad1").Range("C" & uRij)
                    Aanv(Tel) = Worksheets("Blad1").Range("J" & uRij)
                End If
            Next uRij
            ActiveWorkbook.Close False
            For x = 1 To Tel
[COLOR="Red"]                Workbooks(BestNaar).Worksheets("Blad2").Range("A1").End(xlDown).Offset (1)
                Workbooks(BestNaar).Worksheets("Blad2").Range("A1").Value = PIT(x)[/COLOR]
            Next x
        End If
        lRij = lRij + 1
        BRij = Worksheets("Controlestaat").Range("B" & lRij).Value
    Wend
End Sub
Lijkt allemaal goed te werken behalve dat ik een fout krijg 'Subscript valt buiten bereik' bij
Code:
                Workbooks(BestNaar).Worksheets("Blad2").Range("A1").End(xlDown).Offset (1)
                Workbooks(BestNaar).Worksheets("Blad2").Range("A1").Value = PIT(x)

Ik probeer hier naar de laatste regel te gaan om de waarden in te voegen.
Het worksheet ("Blad2") bestaat echt, dus daar kan het niet aan liggen.

Graag weer advies

Wim
 
Code:
 Workbooks(BestNaar).Worksheets("Blad2").Range("A1").End(xlDown).Offset (1)
                Workbooks(BestNaar).Worksheets("Blad2").Range("A1").Value = PIT(x)

wordt

Code:
 Workbooks(BestNaar).Worksheets("Blad2").Range("A1").End(xlDown).Offset(1).Value = PIT(x)
 
Code:
 Workbooks(BestNaar).Worksheets("Blad2").Range("A1").End(xlDown).Offset(1).Value = PIT(x)

Deze had ik eerst ook staan, maar kreeg daar dezelfde boodschap op.
'Het Subscript valt buiten het bereik'.

Dus in principe zijn we het er over eens hoe het moet (ik heb veel geleerd) maar deze boodschap kan ik niet oplossen.
In voorgaande gevallen had het met de sheetnaam te maken, maar deze bestaat echt.
 
Laatst bewerkt:
2 vragen.

1. wat krijg je met

MsgBox PIT(x)

2. Er is toch wel degelijk nog een niet-lege cel onder A1 van dat blad? Anders spring je met de End naar de laatste rij van de sheet, en als je dan een Offset doet knalt de code eruit. Begrijpelijk.
 
2 vragen.

1. wat krijg je met

MsgBox PIT(x)

2. Er is toch wel degelijk nog een niet-lege cel onder A1 van dat blad? Anders spring je met de End naar de laatste rij van de sheet, en als je dan een Offset doet knalt de code eruit. Begrijpelijk.


Wigi

Helaas ben ik mijn memorystik vergeten op mijn werk dus ik moet het morgen even uitproberen. Ik kom er op terug

Tot morgen

Wim
 
2 vragen.

1. wat krijg je met

MsgBox PIT(x)

2. Er is toch wel degelijk nog een niet-lege cel onder A1 van dat blad? Anders spring je met de End naar de laatste rij van de sheet, en als je dan een Offset doet knalt de code eruit. Begrijpelijk.

Goedemorgen,

Alles uitgeprobeert. de MsgBox geeft inderdaad gewoon de waarde zoals die zijn opgehaald.
De eerste regel in 'Blad2' bevat kopgegevens dus er is daadwerkelijk een lege regel na A1.

Wat nu?
 
Probleem is opgelost en wel heel simpel.

Ipv

Code:
Workbooks(BestVan).Worksheets("Teller").Range("A1").End(xlDown).Offset(1).Value = PIT(x)
heb ik dit gebruikt
Code:
ThisWorkbook.Worksheets("Teller").Range("A1").End(xlDown).Offset(1).Value = PIT(x)
en hij werkt.

Iedereen die hier veel tijd aan heeft besteed hartelijk bedankt
We blijven elkaar steunen

Wim
 
Tja Wim, als

Code:
Workbooks(BestVan)

hetzelfde is als

Code:
Workbooks(BestVan)

vanwaar al die eerdere code daarvoor in eerdere posts? Dan had je toch al van in het begin ThisWorkbook kunnen gebruiken?
 
Tja Wim, als

Code:
Workbooks(BestVan)

hetzelfde is als

Code:
Workbooks(BestVan)

vanwaar al die eerdere code daarvoor in eerdere posts? Dan had je toch al van in het begin ThisWorkbook kunnen gebruiken?

Als ik inderdaad dit had geweten.....

Maar het lijkt er dus op (en dat is wel een leerpuntje) dat je een al open Workbook niet met Workbooks(BestVan) kan benaderen maar alleen met Thisworkbook.
Volgens mij kan je zelfs ThisWorkbook helemaal weglaten!

Maar nogmaals bedankt voor de genomen moeite.

Wim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan