functie cel1 of cel2 of cel3...........

Status
Niet open voor verdere reacties.

fraanske82

Gebruiker
Lid geworden
16 aug 2008
Berichten
53
hallo,

Ik heb een printbutton die via een IF functie extra moet printen als
er bepaalde cellen gevuld zijn. zie onderstaand:

If Sheets("Artikelen").Cells(38, 5).Value = Empty Then
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$37"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End If

If Sheets("Artikelen").Cells(38, 5) > Empty Then
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$70"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
end if

Nou zoek ik de functie voor ("of") het moet namelijk (cel 38, 5) (40, 5) en (45, 5) zijn.

Hoor het graag!

Gr.
Frank
 
hallo,

Ik heb een printbutton die via een IF functie extra moet printen als
er bepaalde cellen gevuld zijn. zie onderstaand:

If Sheets("Artikelen").Cells(38, 5).Value = Empty Then
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$37"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End If

If Sheets("Artikelen").Cells(38, 5) > Empty Then
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$70"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
end if

Nou zoek ik de functie voor ("of") het moet namelijk (cel 38, 5) (40, 5) en (45, 5) zijn.

Hoor het graag!

Gr.
Frank

Moet al die cellen gevuld zijn voordat er geprint moet worden of print je naar het aantal cellen die gevuld zijn? Dus als cel
E38 gevuld is ==>printen
E40 leeg is
E45 gevuld is ==>printen

Er wordt dus 2 keer geprint.

Met vriendelijke groet,


Roncancio
 
Ik vermoed:

Code:
ActiveSheet.PageSetup.PrintArea = activesheet.range("$E$1").currentregion.address
ActiveWindow.SelectedSheets.PrintOut
 
beste Roncancio,

Het is de bedoeling dat als 1 van die cellen gevuls is dat het volledige blad wordt geprint!
volledig blad is dus:
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$70"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

hoor het graag
 
Zo iets?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E38,E40,E45")) Is Nothing And Target.Count = 1 Then
    With Sheets("Artikelen")
        If .Range("E38").Value <> "" Or .Range("E40").Value <> "" Or .Range("E45").Value <> "" Then
            ActiveSheet.PageSetup.PrintArea = "$E$1:$J$70"
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        End If
    End With
End If
End Sub

Programma werkt uitsluitend als er 1 van de 3 cellen wordt gewijzigd.

Met vriendelijke groet,


Roncancio
 
helaas werkt dat ook niet!

Heb zelf onderstaande geprobeerd maar werkt ook niet!!

If .Range("E38") Or .Range("E39") > "" Then
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$70"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Else
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$37"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


iemand nog een suggestie?

gr.
 
Code:
Sub wigi()

    If Len(Range("E38").Value) > 0 _
        Or Len(Range("E40").Value) > 0 _
        Or Len(Range("E45").Value) > 0 Then
            ActiveSheet.PageSetup.PrintArea = "$E$1:$J$70"
    Else
        ActiveSheet.PageSetup.PrintArea = "$E$1:$J$37"
            
    End If
    
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End Sub

Wigi
 
hoi wigi,

Pikt hij blijkbaar ook niet.
Als ik 1 van de cellen vul dan print hij t/m J70 helaas doet hij dit
ook als de cellen allemaal leeg zijn!

Heb je nog een ander oplossing misschien?
Hoor het graag!

Mvg,
frank

P.s ik heb excel 2003 ter info!
 
Hmm.

Een kleine aanpassing aan de code. Wellicht dat dit helpt.

Code:
Sub wigi()

    If Len(Trim(Range("E38").Value)) > 0 _
        Or Len(Trim(Range("E40").Value)) > 0 _
        Or Len(Trim(Range("E45").Value)) > 0 Then
            ActiveSheet.PageSetup.PrintArea = "$E$1:$J$70"
    Else
        ActiveSheet.PageSetup.PrintArea = "$E$1:$J$37"
            
    End If
    
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End Sub

Met vriendelijke groet,


Roncancio
 
werkt helaas ook niet.

kan het te maken hebben dat ik als eerste een sheet selecteer.

Nu heb ik dus.

Sheets("Artikelen").Select

If Len(Trim(Range("E38").Value)) > 0 _
Or Len(Trim(Range("E40").Value)) > 0 _
Or Len(Trim(Range("E45").Value)) > 0 Then
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$70"
Else
ActiveSheet.PageSetup.PrintArea = "$E$1:$J$37"

End If

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End Sub
 
Zou niet uit mogen maken.
Kan je het bestand opsturen. Zonder gevoelige info uiteraard.
Dan kunnen we beter kijken wat er aan de hand is.

Met vriendelijke groet,


Roncancio
 
in bijlage een voorbeeldje.

Als ik eerst blad 2 selecteer werkt hij niet, doe ik dezelfde actie in blad 1 werkt hij wel!
rara
 

Bijlagen

Volgens mij weet ik al wat er aan de hand is.

Zeg het maar als ik ernaast zit:
- De knop staat in blad 1
- De "lege" cellen staan in blad 1
- Het afdrukbereik staat in blad 2 (Artikelen)

Het punt is dat door Blad 2 te selecteren het bereik afgedrukt wordt omdat Blad 2 niet leeg is en blad 1 wel.
Probeer onderstaande code.

Code:
Private Sub CommandButton1_Click()
If Len(Range("E38").Value) > 0 _
    Or Len(Range("E40").Value) > 0 _
    Or Len(Range("E45").Value) > 0 Then
        Sheets("Artikelen").PageSetup.PrintArea = "$E$1:$J$70"
Else
        Sheets("Artikelen").PageSetup.PrintArea = "$E$1:$J$37"
End If
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End Sub

Met vriendelijke groet,


Roncancio
 
nee,

De knop staat op blad 1
de lege cellen staan op bald 2 evenals het afdrukbereik.

Het is een moeilijk geval, ben er zelf al 3 dagen mee aan het puzzelen pfffffffffff
 
Wellicht een domme vraag, maar ik stel 'm toch.
Kloppen wel de cel verwijzingen? Dus cel E38, E40, E45?

Wellicht lukt onderstaande code.
Code:
Private Sub CommandButton1_Click()
If IsEmpty(Sheets("Artikelen").Range("E38").Value) = False _
    Or IsEmpty(Sheets("Artikelen").Range("E40").Value) = False _
    Or IsEmpty(Sheets("Artikelen").Range("E45").Value) = False Then
        Sheets("Artikelen").PageSetup.PrintArea = "$E$1:$J$70"
Else
        Sheets("Artikelen").PageSetup.PrintArea = "$E$1:$J$37"
End If
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

End Sub
Anders proberen we het per cel.

Met vriendelijke groet,


Roncancio
 
Super werkt perfect!!!!!!

Doordat er bij elke Or verwezen wordt naar de sheet werkt hij wel!!!

Harstikke bedankt, kan ik weer veder!!

Fijn weekend!
 
Super werkt perfect!!!!!!

Doordat er bij elke Or verwezen wordt naar de sheet werkt hij wel!!!

Harstikke bedankt, kan ik weer veder!!

Fijn weekend!

Oef, een pak van mijn hart.
Vergeet svp niet om de vraag op opgelost te zetten.
Bvd.

Ook een prettig weekend toegewenst.

Met vriendelijke groet,


Roncancio
 
Ter afronding

Code:
Private Sub CommandButton1_Click()
  With Sheets("Artikelen")
    .PageSetup.PrintArea = "$E$1:$J$37"  
    If .Range("E38,E40,E45").specialcells(xlcelltypeconstants).count >0 Then.PageSetup.PrintArea = "$E$1:$J$70"
    .PrintOut 
  End With
End Sub
of
Code:
Private Sub CommandButton1_Click()
  With Sheets("Artikelen")
    .PageSetup.PrintArea = "$E$1:$J$" & iif(.Range("E38,E40,E45").specialcells(xlcelltypeconstants).count =0,37,70 )
    .PrintOut 
  End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan