• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kayıt Yapılan Veriye Göre Satır Genişleyip Daralsın

Katılım
9 Ekim 2009
Mesajlar
1,626
Excel Vers. ve Dili
türkçe
2003
İyi günler ekli dosyada veri sayfasında 3 adet TextBox var .Ben bunlara veri girip kaydet butonuna bastığımda ilgili veriler rapor sayfasına kayıt yapılıyor.Benim yapmak istediğim veri sayfasından textboxlardan rapor sayfasına gönderdiğim veri kadar rapor sayfasında C12,C13,C14 satırları genişleyip daralabilir mi?

http://dosya.co/cb4m2q8huxox/dosya1.xls.html
 
VBA sayfasında bir Module ekleyin.
Yeni Module aşağıdaki kodu kopyalayıp yapıştırın.
Kod:
Sub SatırAyarla()
Dim j As Long
Dim n As Long
Dim i As Long
Dim MW As Double
Dim RH As Double
Dim MaxRH As Double
Dim rngMArea As Range
Dim rng As Range

Const SpareCol As Long = 26
Set rng = Range("C12:I" & Range("C" & Rows.Count).End(xlUp).Row)

With rng
For j = 1 To .Rows.Count
If Not .Parent.Rows(.Cells(j, 1).Row).Hidden Then

If Application.WorksheetFunction.CountA(.Rows(j)) Then
MaxRH = 0
For n = .Columns.Count To 1 Step -1
If Len(.Cells(j, n).Value) Then

If .Cells(j, n).MergeCells Then
Set rngMArea = .Cells(j, n).MergeArea
With rngMArea
MW = 0
If .WrapText Then

For i = 1 To .Cells.Count
MW = MW + .Columns(i).ColumnWidth
Next
MW = MW + .Cells.Count * 0.66

With .Parent.Cells(.Row, SpareCol)
.Value = rngMArea.Value
.ColumnWidth = MW
.WrapText = True
.EntireRow.AutoFit
RH = .RowHeight

MaxRH = Application.Max(RH, MaxRH)
.Value = vbNullString
.WrapText = False
.ColumnWidth = 8.43
End With
.RowHeight = MaxRH
End If
End With
ElseIf .Cells(j, n).WrapText Then
RH = .Cells(j, n).RowHeight
.Cells(j, n).EntireRow.AutoFit
If .Cells(j, n).RowHeight < RH Then .Cells(j, n).RowHeight = RH
End If
End If
Next
End If
End If
Next
.Parent.Parent.Worksheets(.Parent.Name).UsedRange
End With
End Sub

Daha sonra "veri" sayfanızdaki kodu aşağıdaki şekilde yapın.(Son satır yukarıdaki kodu çalıştırmak içindir)
Kod:
Private Sub CommandButton1_Click()
Dim sat As Long
Dim S1 As Worksheet, S2 As Worksheet
On Error Resume Next
Set S1 = Worksheets("VERÝ")
Set S2 = Worksheets("RAPOR")
S2.Range("c12") = Replace(Replace(Replace(TextBox1.Text, Chr(13), " "), Chr(32), " "), Chr(9), "         ") 'ÖZÜ-1
S2.Range("c14") = Replace(Replace(Replace(TextBox2.Text, Chr(13), " "), Chr(32), " "), Chr(9), "         ") 'ÖZÜ-1
S2.Range("c16") = Replace(Replace(Replace(TextBox3.Text, Chr(13), " "), Chr(32), " "), Chr(9), "         ") 'ÖZÜ-1
Sheets("rapor").Select
[B][COLOR="Red"]Call SatırAyarla[/COLOR][/B] ' Module1 deki kodu çalıştırır.
End Sub
 
Sayın turist çok teşekkür ederim.Kodlar güzel çalışıyor.Şöyle bir sıkıntı var.Veri sayfasındaki textboxlara fazla veri girip kaydet butonuna bastğımda veriler rapor sayfasına kayıt yapılıyor.Yalnız rapor sayfasında açılan satırda hepsi gözükmüyor.Verilerin hepsinin gözükmesi için satırları manuel olarak açmak zorunda kalıyorum.Manuel açıncada bir dahaki az veri gönderdiğim zaman kod görevini yapmıyor.Çözü mü varmıdır.?
 
Sayın turist çok teşekkür ederim.Kodlar güzel çalışıyor.Şöyle bir sıkıntı var.Veri sayfasındaki textboxlara fazla veri girip kaydet butonuna bastğımda veriler rapor sayfasına kayıt yapılıyor.Yalnız rapor sayfasında açılan satırda hepsi gözükmüyor.Verilerin hepsinin gözükmesi için satırları manuel olarak açmak zorunda kalıyorum.Manuel açıncada bir dahaki az veri gönderdiğim zaman kod görevini yapmıyor.Çözü mü varmıdır.?

Sayın ormann,
Excel kullanırken bazı limitleri bilmekte fayda var.
Daha fazla bilgi için:BAKINIZ
Örneğin; satır genişliğini 409'dan fazla yapamazsınız.
Birleştirilmiş hücreler aynı satırda bulunduğu için, mesela C12:I12 birleştirilmiş hücrenin satır genişliği maximum 409 olacaktır.
Eğer, veri sayfasındaki metin bu alana alındığında gerekli olan satır genişliği 409u aşıyorsa bu durumda metnin son kısmı gözükmeyecektir.
Dosyanızın tamamını ve kullanım amacınızı bilmeden sadece soru cevap şeklinde böyle bir yanıt sanırım yeterli olur.
Alternatif olarak;
Birleştirilmiş hücrelerinizin şeklini ve boyutunu değiştirerek çözüm arayabilirsiniz.
 
Teşekkür ederim bigilendirmeleriniz için.Kod şimi görüypr.409 punttan fazla veri var sa manuel olarak satırı açoyorum.O zamam kod işlemiyot.Bunun çözümü varmı makro ile.
 
Teşekkür ederim bigilendirmeleriniz için.Kod şimi görüypr.409 punttan fazla veri var sa manuel olarak satırı açoyorum.O zamam kod işlemiyot.Bunun çözümü varmı makro ile.

Manuel satır açıyorsanız, Veri sayfasındaki Kod'un çalışmasını bozuyorsunuz.
Orada; Veri sayfasındaki TextBox'larda yazanlar rapor sayfasının C12, C14 ve C16 hücrelerine gönderiliyor.
Satır açtığınızda rapor sayfasının c12,c14,c16 değişmediği için TextBoxtakiler doğru adrese gidemiyor anlaşılan.
Bu nedenle;
Tek tek sorunu çözmek yerine ; örnek Excel dosyanızı ekleyip açıklamaları dosya üzerinde belirtirseniz daha kolay cevap bulabilirsiniz.
Önemli olan ; bu şekilde kullanmak istemenizin nedeni.
Belki alternatif çözümler de olabilir.
Kendi konunuzu ve dosyanızı , ihtiyaçlarınızı en iyi siz bilirsiniz.
Bizler yardımcı olmaya çalışırken; sizin kadar bilgi sahibi olmadan ve sadece bildiğimiz konularda destek vermeye gayret ediyoruz.
İyi çalışmalar...
 
Geri
Üst