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

In makro iets tussen "" zetten

Status
Niet open voor verdere reacties.

Westlander1981

Gebruiker
Lid geworden
24 mei 2006
Berichten
26
Hallo,

ik heb een makro gemaakt met daaraan een formulier. In het formulier is het de bedoeling dat de gebruiker vakjes kan aanvinken. Deze vakjes representeren een tabblad.

Nou is het me wel gelukt om met 1 blad het te laten werken. Maar met meerdere is het probleem dat ik niet weet hoe ik "naam1","naam2" zo kan laten vullen (dus met """). Oftewel in het voorbeeld hieronder wil ik als sheidingsteken een " "," " hebben. Is dit mogelijk?
Code:
Private Sub BtnSelecteer_Click()
Dim Buffer As Integer
Dim PrintArray As String
Dim ScheidingsTeken As String

ScheidingsTeken = ", "

Dim arr(3)
    arr(0) = Titelblad
    arr(1) = VersieBeheer
    arr(2) = Totalen
    
Dim namen(3)
    namen(0) = "Titelblad"
    namen(1) = "VersieBeheer"
    namen(2) = "Totalen"
    
Buffer = 0

For Buffer = 0 To 3
If arr(Buffer) = True Then
    PrintArray = PrintArray + namen(Buffer)
    'PrintArray = PrintArray + ScheidingsTeken
    
    'MsgBox ("Printen: " + PrintArray)
End If

Next
    PrintenArray (PrintArray)

End Sub

Private Sub PrintenArray(PrintArray As String)
   
   Sheets(Array(PrintArray)).Select
    ' Sheets("Invoeren").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
 
Hoi Westlander1981,

Probeer een chr$(34) i.p.v. "

Suc6


Ik ben nu iets verder. In het array ziet het er goed uit alleen krijg ik nog een error:
" Het subscript valt buiten het bereik..."


Code:
Private Sub BtnSelecteer_Click()
Dim Buffer As Integer
Dim PrintArray As String

' ScheidingsTeken = """, """
' ScheidingsTekenExtra = Chr$(34)

Dim arr(3)
    arr(0) = Titelblad
    arr(1) = VersieBeheer
    arr(2) = Totalen
    
Dim namen(3)
    namen(0) = "Titelblad"
    namen(1) = "VersieBeheer"
    namen(2) = "Totalen"
    
Buffer = 0


For Buffer = 0 To 2
    If arr(Buffer) = True Then

        PrintArray = PrintArray + namen(Buffer)
        
        If arr(Buffer + 1) = True Then
            PrintArray = PrintArray + Chr$(34) & ", " & Chr$(34)
        End If
   
    End If
Next
MsgBox ("printarray: " & PrintArray)

PrintenArray (PrintArray)

End Sub

Private Sub PrintenArray(PrintArray As String)
   
   Sheets(Array(PrintArray)).Select
    ' ActiveWindow.SelectedSheets.PrintOut Copies:=1
End Sub
 
Hoi Westlander1981,

Ik snap niet helemaal wat je code zou moeten doen. Kun je een voorbeeld-bestandje plaatsen?
 
Hoi Westlander1981,

Ik snap niet helemaal wat je code zou moeten doen. Kun je een voorbeeld-bestandje plaatsen?

Hierbij het frame wat ik gebruikt!

Het is dus de bedoeling dat ze tabbladen kunnen aanvinken (onderaan) en dat dan die pagina`s geprint worden.
 

Bijlagen

Laatst bewerkt:
Hoi Westlander1981,

Ik zou het op deze manier oplossen:

Code:
Private Sub BtnSelecteer_Click()
Dim Buffer As Integer
Dim PrintArray As String

Dim arr(3)
    arr(0) = Titelblad
    arr(1) = VersieBeheer
    arr(2) = Totalen
    
Dim namen(3)
    namen(0) = "Titelblad"
    namen(1) = "VersieBeheer"
    namen(2) = "Totalen"
    
Buffer = 0

For Buffer = 0 To 2
    If arr(Buffer) = True Then
        PrintArray = namen(Buffer)
        PrintenArray PrintArray
    End If
Next

End Sub

Private Sub PrintenArray(PrintArray As String)
   
   ''Sheets(PrintArray).Select
    ' ActiveWindow.SelectedSheets.PrintOut Copies:=1
   Sheets(PrintArray).PrintOut Copies:=1
   
End Sub

Suc6
 
Hoi Westlander1981,

Ik zou het op deze manier oplossen:

Code:
Private Sub BtnSelecteer_Click()
Dim Buffer As Integer
Dim PrintArray As String

Dim arr(3)
    arr(0) = Titelblad
    arr(1) = VersieBeheer
    arr(2) = Totalen
    
Dim namen(3)
    namen(0) = "Titelblad"
    namen(1) = "VersieBeheer"
    namen(2) = "Totalen"
    
Buffer = 0

For Buffer = 0 To 2
    If arr(Buffer) = True Then
        PrintArray = namen(Buffer)
        PrintenArray PrintArray
    End If
Next

End Sub

Private Sub PrintenArray(PrintArray As String)
   
   ''Sheets(PrintArray).Select
    ' ActiveWindow.SelectedSheets.PrintOut Copies:=1
   Sheets(PrintArray).PrintOut Copies:=1
   
End Sub

Suc6

Maar nu heb ik weer het probleem dat er geen "," tussen staat!

Als jij het frame opstart en een aantal knoppen selecteerd.. krijg je dan geen foutmelding?
 
Hoi Westlander1981,

Nee je krijgt geen foutmelding.

Code:
For Buffer = 0 To 2
    If arr(Buffer) = True Then
        PrintArray = namen(Buffer)
        PrintenArray PrintArray
    End If
Next
Dus als arr(buffer) de waarde TRUE heeft dan wordt de functie PRINTENARRAY aangeroepen met als PrintArray als waarde.

Dus i.p.v. alle benodigde sheets in eens naar de functie PRINTENARRAY te sturen, wordt op deze manier de sheets 1 voor 1 naam de function gestuurd, dus geen ARRAY.
 
Hoi Westlander1981,

Nee je krijgt geen foutmelding.

Code:
For Buffer = 0 To 2
    If arr(Buffer) = True Then
        PrintArray = namen(Buffer)
        PrintenArray PrintArray
    End If
Next
Dus als arr(buffer) de waarde TRUE heeft dan wordt de functie PRINTENARRAY aangeroepen met als PrintArray als waarde.

Dus i.p.v. alle benodigde sheets in eens naar de functie PRINTENARRAY te sturen, wordt op deze manier de sheets 1 voor 1 naam de function gestuurd, dus geen ARRAY.

Hmm ok ik zie het nu..
maar dan worden het dus meerdere printopdrachten? Bij het bedrijf waar ik zit komt bij elke printopdracht een voorblad erbij... dat vind ik dan zonde.. is het niet anders op te lossen? (dus met 1 printopdracht)
 
Hoi Westlander1981,

Ik heb je progje aangepast zodat hij wel meerdere pagina's uitprint. Ieder blad wordt appart uitgeprint maar wel als 1 print opdracht.

Ik moet zeggen ik heb deze code niet zelf bedacht heb, (maar wel zelf gevonden :rolleyes: ) en een beetje aangepast.

Hij doet nu een printpreview, maar die kun je omzetten zodat hij echt print.

Suc6
 

Bijlagen

Hoi Westlander1981,

Ik heb je progje aangepast zodat hij wel meerdere pagina's uitprint. Ieder blad wordt appart uitgeprint maar wel als 1 print opdracht.

Ik moet zeggen ik heb deze code niet zelf bedacht heb, (maar wel zelf gevonden :rolleyes: ) en een beetje aangepast.

Hij doet nu een printpreview, maar die kun je omzetten zodat hij echt print.

Suc6

GEWELDIG! ik vind het super! kan nu zelfs zien wat er geprint wordt ;)

Heel erg bedankt!:thumb:
 
GEWELDIG! ik vind het super! kan nu zelfs zien wat er geprint wordt ;)

Heel erg bedankt!:thumb:


Oww ik zie dat het echt alles print.. ook de verborgen dingen..

is het niet mogelijk dat het gewoon print zoals het er normaal uitziet (dus hoe ik het in het begin heb ingesteld...)??

dus als ik het via het menu uitprint moet het er net zo uitziet als ik normaal gesproken op print zou drukken...
 
Hoi Westlander1981,

Hoe bedoel je dat hij niet alles uitprint zoals het er normaal uitziet?

Als ik bijvoorbeeld een knop toevoeg, en deze niet wil laten uitprinten, dan doet hij bij mijn dat ook niet.
 
Hoi Westlander1981,

Hoe bedoel je dat hij niet alles uitprint zoals het er normaal uitziet?

Als ik bijvoorbeeld een knop toevoeg, en deze niet wil laten uitprinten, dan doet hij bij mijn dat ook niet.

Klopt inderdaad.. maaaar.... wat nou als ik Kolom B helemaal verborgen hebt.. deze print hij wel uit dan !

Ik wil eigenlijk dat het resultaat hetzelfde is.. als ik normaal gesproken op de pagina op printen drukt.. ik krijg dan kolom B niet te zien omdat ik ook van te voren het Afdrukbereik heb ingesteld...

iemand nog een idee?
PS.. iedereen heel erg bedankt tot nu toe!!!!!! ik waardeer het.
 
Hoi Westlander1981,

Verborgen kolomen werken nu ook.
Ik weet niet of er nog meerdingen zijn die het niet goed doen (opmaak), maar je kunt bij Sub PrintOnePage()

bij:
Code:
c.PasteSpecial xlPasteColumnWidths
 c.PasteSpecial xlPasteAll
 c.PasteSpecial ' hier kun je nog meer verschillende toevoegen

Meerdere opties toevoegen
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan