PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : رنگ کردم سلول های حاوی فرمول



mostafap4
2010/08/09, 13:13
سلام
میخوام ماکرویی بنویسم که بتونه توی یک شیت سلول هایی که داخلشون فرمول هست را رنگی کنه .
ممنون میشم جواب بدید

shamsololama
2010/08/09, 18:31
با درود فراوان

این یه نمونه ماکرو که این کار رو انجام میده

قسمتی که می خواهید بررسی کند را بصورت A1:o2000 نوشته ام که می توانید آن را تغییر دهید و یا کل شیت را در نظر بگیرید

Sub Macro1()
Dim c
With Sheet1.Range("a1:o2000")
Set c = .Find("*", LookIn:=xlValues, LookAt:=xlPart)

If Not c Is Nothing Then
firstAddress = c.Address
Do
If Left(c.Formula, 1) = "=" Then
'c.Select

With c.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If

End With
End Sub

mostafap4
2010/08/10, 14:08
سلام
ممنونم
یک سوال دیگه
میشه محدودیت ایجاد کرد مثلا فقط یک فرمول خاص که ما بهش میگیم را رنگی کنه
یا مثلا فرمول جمع را قرمز و فرمول کانت را سبز که
یا یک هم چین چیزی
ممنونم از راهنمایی هاتون

shamsololama
2010/08/10, 14:46
با درود فراوان
بله میشه این کار رو انجام داد با کمی تغییر در کد قبلی شدنیه

در این کد جدید همه فرومول ها رو زرد و فورمول های Sum رو آبی و فرمول های AVERAGE را قرمز می کنه که شما به هر صورت و تا هر چند تا فرمول های متفاوت رو می تونی به رنگ های متفاوت مشخص کنی


Sub Macro1()
Dim c
With Sheet1.Range("a1:o2000")
Set c = .Find("*", LookIn:=xlValues, LookAt:=xlPart)

If Not c Is Nothing Then
firstAddress = c.Address
Do
If Left(c.Formula, 4) = "=SUM" Then
With c.Interior
.ColorIndex = 5
.Pattern = xlSolid
End With

ElseIf Left(c.Formula, 8) = "=AVERAGE" Then

With c.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With

ElseIf Left(c.Formula, 1) = "=" Then

With c.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If

End With
End Sub

mostafap4
2010/08/10, 22:08
با سلام و احترام
مهندس این ماکرویی که فرستادید کار نکرد
من یک روش دیگر انجام دادم و اون هم شناسایی فرمول ها با استفاده از .formula هست
اگه میشه شما هم یک فایل نمونه اجرایی از این ماکروای که فرستادید بذارید
ممنونم

shamsololama
2010/08/11, 08:33
با درود فراوان

دلیل کار نکردن ماکرو به این دلیل است که در پنج خط مانده به آخر ماکرد هنگام کپی کردن در سایت تغییر کرده و زمانی که به اکسل وارد می کنید آن را باید تصحیح کنید

Set c = .FindNext© خط از کد c که در دایره قرار گرفته در واقع c بین دو پرانتز است که به این شکل در آمده (c) به این شکل باید باشد و آن را تصحیح کن مشکل اجرا ماکرو حل می شود

در صورت نیاز یک میل برنید تا نمونه فایل را برایتان بفرستم چرا که امروز هرکاری کردم نتوانتسم فایل رو آپلود کنم

shamsololama@yahoo.com

master
2012/11/15, 21:47
این کد رو من نوشتم ولی وقتی اجرا میکنم هیچ اتفاقی نمیافته (اون قسمت c رو هم درست کردم) ولی هیچ اتفاقی نمیافته
اگه ممکنه یه نمونه فایل بزارید
بعد اینکه کلا این کد چه موقعی اجرا میشه؟ من تو کلید تعریف کردم ولی بعد از زدن کلید هیچ اتفاقی نمیافته حالا اگه توی یه module جدید تعریف کنم چه موقعی اجرا میشه؟(عین فرمول های عادی اکسل هر موقع توی صفحه تغییر ایجاد بشه این هم اجرا میشه یا نه حالت دیگری هست؟)
با تشکر

shamsololama
2012/11/17, 08:51
این کد رو من نوشتم ولی وقتی اجرا میکنم هیچ اتفاقی نمیافته (اون قسمت c رو هم درست کردم) ولی هیچ اتفاقی نمیافته
اگه ممکنه یه نمونه فایل بزارید
بعد اینکه کلا این کد چه موقعی اجرا میشه؟ من تو کلید تعریف کردم ولی بعد از زدن کلید هیچ اتفاقی نمیافته حالا اگه توی یه module جدید تعریف کنم چه موقعی اجرا میشه؟(عین فرمول های عادی اکسل هر موقع توی صفحه تغییر ایجاد بشه این هم اجرا میشه یا نه حالت دیگری هست؟)
با تشکر


با درود فراوان
کدهای که می نویسیم بستگی داره آن را در چه اونتی می نویسیم (Event) مثلا اگر در اونت اوپن بوک بنویسید زمان باز شدن فایل این کد اجرا میش و اگر چنج سلکشن بنویسی زمانی که یک سلول را انتخاب میکنید این کد اجرا می شود و ... به همین تریتب در اونت های دیگر و اگر در ماژولی در یک ماکرو


فایل نمونه:
[attachment=1006]
نوشته اید که با اجراری آن ماکرو کد اجرا خواهد شد

master
2012/11/17, 13:33
ضمن تشکر میخواستم بدونم کدوم اونت باعث میشه رفتار کد مثل توابع خود اکسل بشه یعنی هر موقعی که یه تابع ابدیت میشه این کد هم عمل کنه؟اگه اشتباه نکنم با هر تغییری توی هر سلولی کل توابع ابدیت میشه البته مطمئن نیستم درسته؟
ایا جزوه یا PDFی وجود داره که همه اونت ها رو با توضیحاتش داخلش نوشته باشه؟(ترجیحا فارسی)
یه وال دیگه هم دارم اونم اینکه الان این کد رو توی کجا وارد کنم؟الان وقتی محیط VBA رو میارم سه جا هست که میشه وارد کرد یکی نوشته Sheet یکی ThisWorkbook و یکی هم Module ها هستن اینا چر فرقی دارن؟ و میشه چند تا کد رو توی یه Module وارد کرد یا نه باید هر کدی رو توی یه Module نوشت؟(اگه هر دو تا میشه کدوم بهتر هست؟مزیتش چی هست؟)
با تشکر

shamsololama
2012/11/17, 14:24
ضمن تشکر میخواستم بدونم کدوم اونت باعث میشه رفتار کد مثل توابع خود اکسل بشه یعنی هر موقعی که یه تابع ابدیت میشه این کد هم عمل کنه؟اگه اشتباه نکنم با هر تغییری توی هر سلولی کل توابع ابدیت میشه البته مطمئن نیستم درسته؟
ایا جزوه یا PDFی وجود داره که همه اونت ها رو با توضیحاتش داخلش نوشته باشه؟(ترجیحا فارسی)
یه وال دیگه هم دارم اونم اینکه الان این کد رو توی کجا وارد کنم؟الان وقتی محیط VBA رو میارم سه جا هست که میشه وارد کرد یکی نوشته Sheet یکی ThisWorkbook و یکی هم Module ها هستن اینا چر فرقی دارن؟ و میشه چند تا کد رو توی یه Module وارد کرد یا نه باید هر کدی رو توی یه Module نوشت؟(اگه هر دو تا میشه کدوم بهتر هست؟مزیتش چی هست؟)
با تشکر


با درود فراوان
برای اینکه هر موقع تابع های خود اکسل محاسبه میشن این کدی که نوشتی هم اجرا بشه تو این اونت بنویس

Private Sub Worksheet_Calculate()

End Sub

2
شما کدی که دارین رو تو هر سه تا می تونی بنویسی بستی گی داره که میخوای کی اون اون کدت اجرا بشه و اینکه یک کد رو وقتی یه جا ی می نویسی می تونی از چند جا اجراش کنی مثلا وقتی ماکرویی رو تو یک ماژول نوشتی به هرچند تا کلیدی که تو صفحه و تو هر شیتی از شیتها می تونی با اسین ماکرو وصلش کنی که اون کد رو اجرا کنه
و اینکه تو هرکدوم میشه کدهای زیادی نوشت و اینکه مثلا بیایم چند تا ماژول درست کنیم و یا اینکه همش رو تو یک ماژول بنویسیم فرقی نمیکنه ولی برای اینکه بتونیم دسته بندیشون کنیم و برنامه نویسیمون ترتیب و نظرم بیشتری داشته باشه میتونی تو چند تا ماژول که نیاز داریم و هر کدوم به اسمی که نشون دهنده آن کارمون باشه تقسیم بندیشون کنیم