چاپ شماره سطر انتخاب شده در چند rng متفاوت

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • sabertb

    • 2014/04/09
    • 347
    • 45.00

    چاپ شماره سطر انتخاب شده در چند rng متفاوت

    سلام و خسته نباشید به همه دوستان و اساتید

    قبلا روش نمایش شماره سطر انتخاب شده یک محدوده رو به وسیله VBA انجام دادم ، ولی اگر چند محدوده مختلف تعریف کنیم و سطر انتخاب شده در هر محدوده در محل های مختلف بخواهیم نمایش یابد selectrow های 1 تا 5 چگونه باید عمل کرد ؟

    روشی که برای یک رنج مشخص استفاده میکنم :
    کد PHP:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If 
    Not (Application.Intersect(ActiveCellRange("rng").CellsIs NothingThen _
        Call UpdateAfterAction
    End Sub 
    module :
    کد PHP:
    Sub UpdateAfterAction()
        
    Dim topRow As Integer
        
        topRow 
    Range("rng").Cells(11).Row
        
    [selectrow] = ActiveCell.Row() - topRow 1
    End Sub 
    حالا اگر من رنج های rng1 ، rng2 و.... ایجاد کنم و بخواهم با کلیک کردن در یکی از سلول های rng1 شماره آن سطر نسبت به rng1 در سلول selectrow1 نمایش یابد . و به صورت جداگانه با کلیک کردن در یکی از سلول های rng2 شماره آن سطر نسبت به rng2 در سلول selectrow2 نمایش بدهد . و الا آخر رنج های مختلف با شماره سطر های مختلف در سلول های مربوطه نمایش یابند.

    راه حل این موضوع چیست ؟
    :min10::min18::min13::min22:
  • Ali Parsaei
    مدير تالارتوابع اکسل

    • 2013/11/18
    • 1522
    • 71.67

    #2
    سلام،
    من اينگونه متوجه شدم:
    1- چند محدوده داريم به ترتيب و دقيقا" با نامهاي rng_1 و rng_2 و .... (خطهاي: "_" را مخصوصا" اضافه کردم چون اکسل اجازه نامگذاري rng1 نمي دهد زيرا آدرس يک سل است)
    2- چند تا سل تکي داريم که آنها را هم با نامهاي
    selectrow1 و selectrow2 و ...نامگذاري کرده ايم
    حال مي خواهيم هر سل از هر محدوده را که انتخاب کرديم شماره رديف سل انتخابي نسبت به رديف اول محدوده در سل selectrow مربوطه خودش درج گردد
    در اين صورت کد آن به صورت زير است: وگرنه که من درست متوجه منظورتان نشده ام!!!

    کد PHP:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim C As Integer
    Dim topRow 
    As Integer
    For 1 To 2   
     
    If Not (Application.Intersect(ActiveCellRange("rng_" C).CellsIs NothingThen
        topRow 
    Range("rng_" C).Cells(11).Row   
     Range
    ("selectrow" C) = ActiveCell.Row() - topRow 1
    End 
    If
    Next
    End Sub 
    البته کد فقط براي دو محدوده نوشته شده اگر بيشتر باشد بايد تعداد را اصلاح کنيد.

    [SIGPIC][/SIGPIC]

    کامنت

    چند لحظه..