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

Excel VBA afdrukken werkbladen aan de hand van de opgegeven waarde.

Status
Niet open voor verdere reacties.

CVermeulen92

Gebruiker
Lid geworden
21 feb 2018
Berichten
6
Geachten,

Na een tijdje flink rond gekeken te hebben heb ik een vraag die ik niet ergens anders kan vinden. Ik hoop dan ook dat jullie mij kan helpen gezien dit (denk ik) een ingewikkelde is.

Ik ben bezig met verschillende lijsten in excel. De bedoeling is dat het slechts een 'klik and go' Excel wordt. Zo heb ik knoppen aangemaakt met de volgende codes:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sub PRINT_FAT_MODULE()
' Module Macro
'

'
Sheets("1. FAT_MODULE").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=[FAT!G12], Copies:=1, Collate _
:=True, IgnorePrintAreas:=False
Sheets("FAT").Select
End Sub




Sub PRINT_FAT_CIRCULATIEPOMP()
' Module Macro
'

'
Sheets("2. FAT_CIRCULATIEPOMP").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=[FAT!G13], Copies:=1, Collate _
:=True, IgnorePrintAreas:=False
Sheets("FAT").Select
End Sub

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EN GA ZO MAAR DOOR... er zijn namelijk 22 lijsten!

Echter wanneer (bijvoorbeeld) CEL "G13" geen waarde bevat, dan komt er een foutmelding (op zich niet heel erg). Echter wil ik straks alle printknoppen aan 1 printknop koppelen (alles in 1 keer printen 'knop'), maar wanneer 1 lijst niet is ingevuld zal ik hoe dan ook deze foutmelding krijgen (en dus zal 'alles' niet geprint worden).

Mijn vraag aan jullie is of het mogelijk is om alles te kunnen printen, afhankelijk van de cel waarde per blad (de een hoef ik maar 1 pagina te hebben, bij de andere 2, de ander wordt niet afgedrukt omdat ik daar geen vraag naar heb etc...)?

Ik hoop zo voldoende informatie verschaft te hebben. Mocht het nog onduidelijk zijn of heeft u nog vragen of opmerkingen dan hoor ik dat heel graag. Alvast enorm bedankt voor jullie moeite en tijd.


Groetjes,
Chris
 
Test het eens voor alle bladen in de array.
Code:
Sub PRINT_FAT_MODULE()
Dim sh As Worksheet, y As Long
For Each sh In Sheets(Array("1. FAT_MODULE", "2. FAT_CIRCULATIEPOMP"))
 With Sheets("FAT").Range("G12").Offset(y)
    If .Value <> "" Then sh.PrintOut 1, .Value
     y = y + 1
 End With
Next sh
End Sub
 
Test het eens voor alle bladen in de array.
Code:
Sub PRINT_FAT_MODULE()
Dim sh As Worksheet, y As Long
For Each sh In Sheets(Array("1. FAT_MODULE", "2. FAT_CIRCULATIEPOMP"))
 With Sheets("FAT").Range("G12").Offset(y)
    If .Value <> "" Then sh.PrintOut 1, .Value
     y = y + 1
 End With
Next sh
End Sub

Beste Harry,

In het begin leek het er even op dat dit de code is die ik nodig heb. Alleen wanneer ik een leeg veld heb (dus laten we zeggen dat ik geen circulatiepompen heb) dan krijg ik dezelfde foutmelding (getal moet tussen de 1 en de 200.000+ zijn).

Wel enorm bedankt voor uw reactie. Ik hoop dan ook dat u of iemand anders de genoemde code kent of weet aan te passen.


Groetjes,
Chris
 
Wat voor foutmelding?

De code loopt elk werkblad bij langs in de array.
Als FAT!G12.offset(y) =leeg dan gebeurd er niets.
y wordt y + 1
Als FAT!G12.offset(y)=G13 is leeg, gebeurd er weer niets.

Als die wel zijn gevuld gaat het printen met het aantal van de cel die aan beurt is in de loop.
Plaats anders het bestand.
 
Wat voor foutmelding?

De code loopt elk werkblad bij langs in de array.
Als FAT!G12.offset(y) =leeg dan gebeurd er niets.
y wordt y + 1
Als FAT!G12.offset(y)=G13 is leeg, gebeurd er weer niets.

Als die wel zijn gevuld gaat het printen met het aantal van de cel die aan beurt is in de loop.
Plaats anders het bestand.

Dit is de melding:

Microsoft Visual Basic

Fout 1004 tijdens uitvoering:

Het getal moet tussen 1 en 2147483647 liggen. Probeer het opnieuw door een getal in dit bereik in te voeren.




Ik denk dus dat het programma bedoelt dat ik geen 0 pagina's kan uitprinten.


PS> het uploaden lukt niet, ik kan er een WeTrans van maken?
 
Laatst bewerkt:
Vreemde boel.

Maak er eens dit van:
Code:
  If .Value >0 Then sh.PrintOut 1, .Value

Het bestand opslaan al binair bestand en dan lukt het vast wel.

Ps: pak de reageerknop i.p.v. de quoteknop.
Ik hoef mijn eigen geschreven berichten niet steeds weer te zien in jouw schrijven.
 
Beste Harry,

Het is gelukt! Wat ik niet heb ingevuld wordt niet uitgeprint, en alles erna wel. Ik heb de formule direct toegepast voor alle 20 de lijsten en het werkt.


Nogmaals super bedankt voor het reageren. Hiermee is mijn vraag beantwoord :)


PS. Als ik zo brutaal mag zijn, ik loop nog tegen 1 probleempje op. Wellicht dat u daar misschien antwoord op heeft? :$
https://answers.microsoft.com/nl-nl...p-juiste/7a443296-ac00-4bda-8786-54bf4880851e


Groetjes,
Chris
 
Het spijt me, ik ga je Excel bestand niet nabootsen.

Sla het op als .xlsb en plaats het.
Als dat niet lukt plaats je de .xlsb in zip.
 
Beste Harry,

Ook de opgeslagen .xlsb bestand (en ook in zip) wordt nog steeds geweigerd (foutmelding) :/
Mocht u er nog tijd voor hebben dan heb ik hier een WeTransfer link: https://we.tl/2WV5BHeAAP


Groetjes,
Chris
 
Is dit wat je zoekt Chris?
Code:
=AANTAL.ALS(I17:I50;"*circulatiepomp*")
 
Beste Harry,

Bij blad 'ontwikkelaar' heb ik de formule al toegepast om de aantallen op de 'startpagina' te weergeven.
Code:
=AANTAL.ALS(RENVOOI!E5:XX1000;"*"&"circulatiepomp"&"*")

Alleen nu wil ik in het tabblad 'FAT' dat cijfers automatisch gekoppeld worden met hun positienummers. Daar heb ik de volgende formule voor gebruikt:
Code:
=ALS.FOUT(INDEX(RENVOOI!$F$16:$F$1000;AGGREGAAT(15;6;RIJ($B$2:$B$989)/(RENVOOI!$I$17:$I$1000=$C13);KOLOMMEN($C:C)));"")

Echter is het nu zo dat als er staat 'circulatie pomp' dat door de spatie het woord 'circulatiepomp' niet gezien kan worden. Dat zou wel kunnen als ik in de genoemde formule de zoekopdracht naar het woord 'circu' laat zoeken, zoals in mijn eerste voorbeeld (waar nu wel volledig 'circulatiepomp' staat).

Ik moet wel toegeven dat dit erg ver boven mijn petje gaat (gezien ik redelijk, maar totaal geen gevorderde ervaring heb met Excel).


Groetjes,
Chris
 
Die formules met aggregaat werken niet in mijn Excel 2007.

Een alternatief is:
Code:
=ALS.FOUT(INDEX(RENVOOI!$F$16:$F$1000;KLEINSTE(ALS(LINKS(RENVOOI!H$16:I$1000;5)=LINKS($C13;5);RIJ($1:$985));KOLOM(A1)));"")

Die moet je afsluiten met Ctrl+Shift+Enter en niet alleen met Enter.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan