Taralı alanın ilk ve son satır numaraları

Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Merhaba,
Word belgesinde herhangi birkaç satırı tarayıp seçtiğimde bu alanın ilk satırı ile son satırının tüm belgede baştan itibaren kaçıncı numaralar olduğunu mesajbox ta nasıl gösterebilirim?
Bir ilave daha yapıyorum; Tarama yapmaksızın şu anda imlecin bulunduğu satır numarasını da bu şekilde gösterebilirmiyiz?

Taralı alanın ilk satır numarası = ...
Taralı alanın son satır numarası = ...

İmlecin bulunduğu satır numarası = ...
 
Son düzenleme:
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Teşekkür ederim.
Buradaki kodu çalıştırdığımızda belgenin en başından satırları sayarak bulunulan yere ulaşıyor. Sonucu gösteriyor. Uzun belgelerde problem olmakta. Satır numarasını direkt olarak gösterecek başka bir komut veya fonksiyon olabilir mi?
 
Son düzenleme:

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
Teşekkür ederim.
Buradaki kodu çalıştırdığımızda belgenin en başından satırları sayarak bulunulan yere ulaşıyor. Sonucu gösteriyor. Uzun belgelerde problem olmakta. Satır numarasını direkt olarak gösterecek başka bir komut veya fonksiyon olabilir mi?
konuya tam hakim değilim ama aşağıdaki kod satır no veriyor.

Kod:
MsgBox Selection.Information(wdFirstCharacterLineNumber)
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Selection.Information(wdFirstCharacterLineNumber) komutu hızlı sonuç veriyor ama bu da her sayfada yeniden "1" den başlayarak bulunulan satırı gösteriyor.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
sayfa düzeni, sayfa yapısı, satır numaraları, sürekli

sayfanın solunda satır numaraları görüntülenir. imleç ile geldiğiniz satır numarasını rahatlıkla görebilirsiniz. makro kullanmaya da gerek kalmaz.

yok, yapmak istediğiniz mesaj kutusunda satır numarası görüntülemekten farklı bir şey ise, daha açık bir şekilde tanımlayın.


sayfa ve satır no aynı mesajda:

Kod:
Sub test()

Dim say As Long, sat As Long

say = Selection.Information(wdActiveEndAdjustedPageNumber)
sat = Selection.Information(wdFirstCharacterLineNumber)

MsgBox "İmleç " & say & " no.lu sayfanın " & sat & " no.lu satırındadır."

End Sub
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Ben, üyelerimizi yaptığım işlemin ayrıntısı ile meşgul etmek istemediğimden sadece komut satırını verebileceğiniz basit bir mesajbox makrosuna ihtiyacım olduğunu ifade ettim.
İki adet bul işlemi yapıyorum. Bu değerlerin birbirine göre belgedeki yerinin alta mı üstte mi olduğunu bulup ona göre silme veya başka işlem yapıyorum.
Yani sizin makrodaki satır ifadesini "sat1" ve "sat2" şeklinde tanımlıyorum. Sonra "if sat1 > sat2" ise ... diye karşılaştırma yapmak istiyorum. Diğer işlemleri hallettim. Sadece hangi satırın numarası büyük onu bilmek bana yetiyor.
Selection.Information(wdFirstCharacterLineNumber) komutu sayfa değişince satır numarasını tekrar "1" den başlattığı için yanlış oluyor. Mesela ilk aradığım değer birinci sayfa 25. satırda, sonra aradığım değer ise ikinci sayfadaki 5. satırda olsun. Makromuza göre 25 > 5 olduğundan birinci sayfadaki değer daha aşağıda imiş gibi algılıyor.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
indirdiğiniz dosyadaki şu fonksiyon tam olarak bunu yapıyor:

Kod:
Function GetAbsoluteLineNum(r As Range) As Integer
    Dim i1 As Integer, i2 As Integer, Count As Integer, rTemp As Range
    
    r.Select
    Do
        i1 = Selection.Information(wdFirstCharacterLineNumber)
        Selection.GoTo What:=wdGoToLine, which:=wdGoToPrevious, Count:=1, Name:=""
        
        Count = Count + 1
        i2 = Selection.Information(wdFirstCharacterLineNumber)
    Loop Until i1 = i2
    
    r.Select
    GetAbsoluteLineNum = Count
End Function
kullanımı

Kod:
Sub satir_kontrol()

Dim sat1 As Long, sat2 As Long

Application.ScreenUpdating = False

'sat1'in olduğu yere gitmeye yarayan kodlar
sat1 = GetAbsoluteLineNum(Selection.Range)

'sat2'nin olduğu yere gitmeye yarayan kodlar
sat2 = GetAbsoluteLineNum(Selection.Range)

'diğer kodlar
'örnek:
If sat1 > sat2 Then MsgBox "sat1 daha büyük"



Application.ScreenUpdating = True

End Sub
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Çok teşekkür ederim Sn. mancubus
Teşekkür ederim.
Buradaki kodu çalıştırdığımızda belgenin en başından satırları sayarak bulunulan yere ulaşıyor. Sonucu gösteriyor. Uzun belgelerde problem olmakta. Satır numarasını direkt olarak gösterecek başka bir komut veya fonksiyon olabilir mi?
Yukarıdaki mesajımda da belirttiğim gibi o kodları denedim. Benim gibi uzun belgelerde çalışan biri için her seferinde word'ün "yanıt vermiyor..." uyarısı ile beklemeye sebep oluyor. Umarım zahmet vermiyorumdur. Şimdilik bu konuyu beklemeye alabiliriz. Tekrar teşekkür ederim.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
evet. haklısınız. okumuştum ama atlamışım.

bir de şunu dener misiniz?
bulunan satırın 1 öncesini verdiği için +1 ilave ediyoruz.

Kod:
Sub satir_kontrol()

    Dim sat1 As Long, sat2 As Long
    
    Application.ScreenUpdating = False
    
    'sat1'in olduğu yere gitmeye yarayan kodlar
    Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
    sat1 = Selection.Range.ComputeStatistics(wdStatisticLines) + 1
    
    'sat2'nin olduğu yere gitmeye yarayan kodlar
    Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
    sat2 = Selection.Range.ComputeStatistics(wdStatisticLines) + 1
    
    'diğer kodlar
    'örnek:
    If sat1 > sat2 Then MsgBox "sat1 daha büyük"
    
    Application.ScreenUpdating = True

End Sub
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Tamam bu makro hızlı çalışıyor. Çok çok teşekkür ederim.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
rica ederim.
kolay gelsin.
 
Üst