هایلایت کردن سلول های ویرایش شده

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts

  • hasa2
    پاسخ داد

    ممنون حل شد!

    Leave a comment:


  • rasools13
    پاسخ داد
    نوشته اصلی توسط hasa2
    واقعا ممنونم از پیگیری موضوع
    اما با کد جدید باز مشکل جدیدی به وجود اومد!
    کلا دیگه نمیشه ردیف یا ستونی رو حذف کرد!
    به محض حذف کردن یک ردیف یا ستون در اکسل، دوباره ستون یا ردیف حذف شده بر میگرده!
    خوب ردیفی رو حذف نکنید تا ارور نده
    ببخشید حواسم به این موضوع نبود
    این کد اصلاح شده است
    کد PHP:
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        
    Dim CelValue As Variant
        Dim Vtxt 
    As String
        On Error 
    GoTo ExitHandeler
        Vtxt 
    = Target.Value
        Application
    .EnableEvents = False
        CelValue 
    = Target.Value
        Application
    .Undo
        
    If Target.Value <> "" Then
            
    If Target.Value <> CelValue Then
                Target
    .Interior.ColorIndex = 6
                Target
    .Value = CelValue
            End 
    If
        Else
            
    Target.Value = CelValue
        End 
    If
    ExitHandeler:
        
    Application.EnableEvents = True
    End Sub 

    Leave a comment:


  • hasa2
    پاسخ داد
    واقعا ممنونم از پیگیری موضوع
    اما با کد جدید باز مشکل جدیدی به وجود اومد!
    کلا دیگه نمیشه ردیف یا ستونی رو حذف کرد!
    به محض حذف کردن یک ردیف یا ستون در اکسل، دوباره ستون یا ردیف حذف شده بر میگرده!

    Leave a comment:


  • rasools13
    پاسخ داد
    این کد رو بجای کدهای قبلی کپی کنید
    کد PHP:
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        
    Dim CelValue As Variant
        Application
    .EnableEvents = False
        CelValue 
    = Target.Value
        Application
    .Undo
        On Error 
    GoTo ExitHandeler
        
    If Target.Value <> "" Then
            
    If Target.Value <> CelValue Then
                Target
    .Interior.ColorIndex = 6
                Target
    .Value = CelValue
            End 
    If
        Else
            
    Target.Value = CelValue
        End 
    If
    ExitHandeler:
        
    Application.EnableEvents = True
    End Sub 

    Leave a comment:


  • hasa2
    پاسخ داد
    ممنونم از پاسختون
    این On error resume رو هرجا میزارم خطا میگیره
    نتیجه رو در قالب یه فایل میتونید بفرستید ؟
    پیشاپیش بینهایت ممنونم

    Leave a comment:


  • rasools13
    پاسخ داد
    این کد روخط اول بزار
    کد PHP:
    On error resume 

    Leave a comment:


  • hasa2
    پاسخ داد
    ممنونم عالی شد!
    فقط یه مشکل به وجود اومد. وقتی ردیف یا ستونی رو کلا حذف میکنیم ارور میده و دیگه روند عملکرد کد متوقف میشه

    Leave a comment:


  • rasools13
    پاسخ داد
    آهان به این صورت می خواین
    این نیازی به بررسی کلی سلول ها نداره و For و For each هم نمیخواد
    از کد ذیل استفاده کنید
    هر سلولی که ویرایش بشه در صورتی که برابر مقدار قبلیش نباشه هایلات میشه
    فایل پیوست رو هم ببینید
    کد PHP:

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        
    Dim CelValue As Variant
        Application
    .EnableEvents = False
        CelValue 
    = Target.Value
        Application
    .Undo
        
    If Target.Value <> "" Then
            
    If Target.Value <> CelValue Then
                Target
    .Interior.ColorIndex = 6
                Target
    .Value = CelValue
            End 
    If
        Else
            
    Target.Value = CelValue
        End 
    If
        
    Application.EnableEvents = True
    End Sub 
    فایل های پیوست شده
    Last edited by rasools13; 2018/12/30, 01:09.

    Leave a comment:


  • hasa2
    پاسخ داد
    نوشته اصلی توسط rasools13
    منظورم فایل نمونه از قالب کارتون تو اکسل نه vba
    اینکه کجا داده وارد بشه کجا هایلات شه و ..
    آهان
    فایل نمونه رو ضمیمه کردم.
    من میخوام اگه تو هرکدام از سلول های خالی اه چیزی وارد شد اتفاقی نیوفته
    ولی اگه هر کدوم از سلول هایی که الان پر هستند ویرایش بشن های لایت بشن
    قاعدتا میخوام در صورتی که سلول سفیدی اطلاعات واردش شد از این به بعد اون هم تو رنج شمارش بیاد و از حالا به بعد محتویات وارد شده اون هم اگر تغییر کرد ؛ های لایت بشه
    فایل های پیوست شده

    Leave a comment:


  • rasools13
    پاسخ داد
    نوشته اصلی توسط hasa2
    من نمیدونم چه جوری میشه ؛ برای همین گفتم شما اگه میتونید یه فایل نمونه قرار بدین از چیزی که مدنظرتون هست و پیشنهاد دادین.
    ممنونم
    منظورم فایل نمونه از قالب کارتون تو اکسل نه vba
    اینکه کجا داده وارد بشه کجا هایلات شه و ..

    Leave a comment:


  • hasa2
    پاسخ داد
    نوشته اصلی توسط rasools13
    شما فایل نمونه بزارید بهتره
    من نمیدونم چه جوری میشه ؛ برای همین گفتم شما اگه میتونید یه فایل نمونه قرار بدین از چیزی که مدنظرتون هست و پیشنهاد دادین.
    ممنونم

    Leave a comment:


  • rasools13
    پاسخ داد
    شما فایل نمونه بزارید بهتره

    Leave a comment:


  • hasa2
    پاسخ داد
    نوشته اصلی توسط rasools13
    از حلقه for استفاده کنید یا for each
    یک محدوده رو چک کنید و بعد داخل آن با If. شرط خالی بودن سلول های محدوده رو بررسی کنید
    میتونید یه فایل نمونه بدید ؟

    Leave a comment:


  • rasools13
    پاسخ داد
    از حلقه for استفاده کنید یا for each
    یک محدوده رو چک کنید و بعد داخل آن با If. شرط خالی بودن سلول های محدوده رو بررسی کنید

    Leave a comment:


  • hasa2
    پاسخ داد
    ممنون. ولی فکر کنم متوجه منظور من نشدید. این اون چیزی نیست که منظور من بود...

    من میخوام شرط کلا شامل سلول های خالی نشه
    و فقط شامل سلول های پر باشه ....اما سلولهای پر، مشخص نیست کدوما هستند که آدرس اونها رو به صورت مطلق بدم
    ضمنا سلولهای پر هم ثابت نیستند
    یعنی فرض کن الان سلول a1 حاوی اطلاعات و سلول b1 خالی و سفید هست ... حالا اگه من داخل سلول b1 چیزی بنویسم نباید شرط هایلایت کردن براش اتفاق بیوفته (چون خالی از اطلاعات بوده) اما اگه تغییری تو a1 بیوفته باید هایلایت بشه.
    بعد از وارد کردن اطلاعات در b1 الان سلولهای a1 و b1 حاوی اطلاعات هستند و فقط با تغییر این دو سلول باید هایلایت بشن و بقیه سلول ها چون سفید هستند اگه چیزی وارد بشه نباید اتفاقی بیوفته اما پس از وارد کردن اطلاعات اگه تغییری کرد سلول های لایت بشه
    .
    دقیقا مشکل من اینه که چون سلول های حاوی اطلاعات ثابت نیستند نمیتونم محدوده بهشون بدم
    دنبال دستوری میگردم که یا بتونه سلول های خالی رو خودش تشخیص بده و شرط رو براش اجرا نکنه
    یا دستوری که بیاد اول تمام سلول های حاوی اطلاعات رو پیدا کنه و بعد اون رو داخل شرط بزاره...

    Leave a comment:

چند لحظه..