Yazdırma sorunum

Katılım
31 Mart 2008
Mesajlar
158
Excel Vers. ve Dili
2003 türkçe
Altın Üyelik Bitiş Tarihi
26-11-2022
Arkadasalar userform1 deki comboxları, textboxları, yalnızca yazdırmak istiyorum.
userform1.printform
Ben Yukardaki kodu yazdım ama o kod userform1 deki herşeyi yazdırdı.
Benim istediğim labeller, textboxlar ve comboboxları nasıl yazdırırım bu konurda yardımlarınızı bekliyorum.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki gibi bir kod kullanılabilir.

Kod:
Private Sub UFYazdir()
    Call GizleGoster("Gizle", True)
    UserForm1.PrintForm
    Call GizleGoster("Goster", False)
End Sub
'--------------------------------
Private Sub GizleGoster(Durum As String, x As Boolean)
    Dim ctrl As Control
    Dim vsb As Boolean
    vsb = IIf(Durum = "Gizle", True, False)
    For Each ctrl In UserForm1.Controls
        If x = True Then
            If TypeOf ctrl Is MSForms.TextBox Or _
                TypeOf ctrl Is MSForms.Label Or _
                    TypeOf ctrl Is MSForms.ComboBox Then
                        ctrl.Visible = vsb
            Else
                        ctrl.Visible = Not vsb
            End If
        Else
            ctrl.Visible = True
        End If
    Next
End Sub
Örneğin; CommandButton1'in Click olay kodunda bu prosedürü çağırabilirsiniz.

Kod:
Private Sub CommandButton1_Click()
    Call UFYazdir
End Sub
 
Katılım
31 Mart 2008
Mesajlar
158
Excel Vers. ve Dili
2003 türkçe
Altın Üyelik Bitiş Tarihi
26-11-2022
ben bu kodu şimdi denedim olmuyor hiç yazdırmıyor
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Şöyle bir yöntemde izlenebilir : Formda yazdırılacak nesnelerin aynısını sayfa üzerinde dizilişi yapıp, formdan sayfa üzerindeki nesnelere veri aktarmasıyla yazdırılabilir.
 
Katılım
31 Mart 2008
Mesajlar
158
Excel Vers. ve Dili
2003 türkçe
Altın Üyelik Bitiş Tarihi
26-11-2022
hocam dosyayı ekte gönderdim

hocam ekteki dosyayı incelerseniz ve kodu tam olarak nereye yazacağımı belirtirseniz sevinirim
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ben tam olarak amacınızın ne olduğunu anlayabilmiş değilim. Eğer, form üzerindeki bilgilerin çıktısını almak istiyorsanız, Userform1.PrintForm kullanışlı olmayacaktır. Bu şekilde bir Yazdırma işlemi, PrintScreen gibi bir şeydir... Ama yine de, bu komutu kullanmak istediğinizi varsayarak kitabınızı aşağıdaki şekilde düzenledim. İnceleyiniz.
 
Katılım
31 Mart 2008
Mesajlar
158
Excel Vers. ve Dili
2003 türkçe
Altın Üyelik Bitiş Tarihi
26-11-2022
bunu ben yaptım userform1.printform bu kodla yaptım ben userformdaki yazdıklarımın çıktısını almak istiyorum sizin düzenlemiş oldugunuz gidi userformdaki herşey çıkıyor yani userforma baska bişeylerde eklediğimizde onlarda çıkıyor ben sadece userformdaki label combobox ve textboxlara yazdıklarımın çıktısını almak istiyorum
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sorunuzu bu şekilde başta sorsaydınız daha iyi olurdu. İlk sorunuzda, Label, TextBox ve Combobox'ları yazdırmak istediğinizi söylediniz. Şimdi ise, içindeki bilgileri yazdırmak istediğinizi belirtiyorsunuz.

Aşağıdkai kodları Userform'a kopyalayınız.

NOT : Nesne yerleşim ve adlandırmalarınız, sistematik yapılmadığı için; nesneler, kodlarla yeniden sıralanmak zorunda kalmıştır. Bu nedenle de kodlar uzamıştır. Normalde UF tasarımınıza başta dikkat etseydiniz, 10 satırı geçmeden hallolabilirdi.

Kod:
Option Explicit
Private Sub CommandButton95_Click()
    Dim ctrl As Control
    Dim i As Integer
    Dim j As Integer
    Dim arrTop()
    Dim arrCtrl()
    Dim nm, tp
    Dim wb As Workbook
    
    For Each ctrl In UserForm1.Controls
        If TypeOf ctrl Is MSForms.Label Then
            i = i + 1
            ReDim Preserve arrTop(1 To 2, 1 To i)
            arrTop(1, i) = ctrl.Name
            arrTop(2, i) = ctrl.Top
        ElseIf TypeOf ctrl Is MSForms.TextBox Or _
                TypeOf ctrl Is MSForms.ComboBox Then
            j = j + 1
            ReDim Preserve arrCtrl(1 To 2, 1 To j)
            arrCtrl(1, j) = ctrl.Name
            arrCtrl(2, j) = ctrl.Top
        End If
    Next
    
    Call Siralama(arrTop())
    Call Siralama(arrCtrl)
    
    Application.ScreenUpdating = False
    
    Workbooks.Add
    Set wb = ActiveWorkbook
    
    With wb.ActiveSheet
        For i = 1 To UBound(arrTop, 2)
            .Cells(i, 1) = UserForm1.Controls(arrTop(1, i)).Caption
            .Cells(i, 2) = UserForm1.Controls(arrCtrl(1, i)).Text
        Next i
        .Columns("A:B").EntireColumn.AutoFit
        .Range("A1:B" & UBound(arrTop, 2)).PrintOut
    End With
    wb.Close 0
    
    Application.ScreenUpdating = False
    
    Set wb = Nothing
End Sub
 
'-------------------------------
Private Sub Siralama(arR As Variant)
    Dim i As Integer
    Dim j As Integer
    Dim nm, tp
    For i = 1 To UBound(arR, 2) - 1
        For j = i + 1 To UBound(arR, 2)
            If arR(2, j) < arR(2, i) Then
                nm = arR(1, i)
                tp = arR(2, i)
                arR(1, i) = arR(1, j)
                arR(2, i) = arR(2, j)
                arR(1, j) = nm
                arR(2, j) = tp
            End If
        Next j
    Next i
End Sub
 
Üst