فهرست
ټیوټوریل ښیې چې څنګه د VBA په کارولو سره په حجره کې نقل شوي ټکي یا متن تارونه روښانه کړئ.
د ایکسل مشروط فارمیټ کول دا امکان ورکوي چې نقلونه په هره ممکنه طریقه روښانه کړئ چې تاسو یې فکر کولی شئ: د لومړي پیښو سره یا پرته، په یوه کالم یا څو کالمونو کې، پرله پسې نقل شوي حجرې، او ټول قطارونه په کلیدي کالم کې د ورته ارزښتونو پر بنسټ. مګر، د معمول په څیر، یو "مګر" شتون لري. د مشروط فارمیټینګ قواعد د حجرې په کچه کار کوي پداسې حال کې چې تاسو غواړئ د ټول حجرو پرځای نقل متن روښانه کړئ. دا یوازې د میکرو سره ترسره کیدی شي. حتی که تاسو د VBA سره کومه تجربه نلرئ، مهرباني وکړئ د دې پاڼې تړلو لپاره بېړه مه کوئ. دلته، تاسو به د کارونې لپاره چمتو کوډ مثالونه او په خپلو کاري پاڼو کې د کارولو څرنګوالي په اړه تفصيلي لارښوونې ومومئ.
په یوه حجره کې نقل شوي ټکي په نښه کړئ چې د متن قضیه له پامه غورځوي
دا مثال ښیي چې څنګه په حجره کې د نقل شوي ټکي یا متن تارونه په سور فونټ رنګ کې سیوري کړئ لکه په لاندې عکس کې ښودل شوي. مهرباني وکړئ په یاد ولرئ چې کوچني او لوی توري د ورته حروفونو په توګه چلند کیږي. د مثال په توګه، نارنج ، نارنج او نارنج ورته کلمې ګڼل کیږي.
د د میکرو کوډ په لاندې ډول دی:
Public Sub HighlightDupesCaseInsensitive() Dim Cell د رینج ډیم ډیلیمیټر په توګه د سټینګ ډیلیمیټر = انپټ بکس ("هغه ډیلیمیټر دننه کړئ چې په یوه حجره کې ارزښتونه جلا کوي" , "delimiter" , ", " ) د هرې حجرې لپارهApplication.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False) بل پای Sub Sub HighlightDupeWordsInCell(حجره د رینج په توګه، اختیاري ډیلیمیټر د سټرینګ په توګه = "" , اختیاري کیس حساس لکه بولین = ریښتیني) ډیم متن د سټرینګ په توګه د توری په توګه String Dim wordIndex, matchCount, positionInText د انټیجر په توګه که قضیه حساس وي نو کلمې = Split(Cell.Value, Delimiter) نور کلمې = Split(LCase(Cell.Value), Delimiter) پای که د WordIndex = LBound (کلمو) لپاره UBound (کلمو) ته - 1 کلمه = ټکي(wordIndex) matchCount = 0 for nextWordIndex = wordIndex + 1 د UBound لپاره (کلمې) که کلمه = ټکي (NextWordIndex) نو matchCount = matchCount + 1 End که بل nextWordIndex که matchCount > 0 بیا متن = "" د Index = LBound (کلمو) لپاره UBound (کلمو) متن = متن & کلمې (انډیکس) که (کلمې(انډیکس) = کلمه) نو بیا Cell.Characters(Len(text) - Len(word) + 1، Len(word)).Font.Color = vbRed پای که متن = متن او amp; د بل پای محدود کړئ که د Next wordIndex End Subپه حجره کې د نقل شوي متن په اړه حساسیت روښانه کړئ
په ډیری حاالتو کې، موږ په Excel کې د متن ننوتلو سره کار کولو په وخت کې د لیک قضیه له پامه غورځوو. په ځینو شرایطو کې، په هرصورت، د متن قضیه مهمه ده. د مثال په توګه، که تاسو د IDs، پاسورډونو، یا د دې ډول نورو ریکارډونو سره معامله کوئ، تارونه لکه 1-AA ، 1-aa او 1-Aa نقل نه دي او باید روښانه نشي:
پدې حالت کې،د کوډ لاندې نسخه وکاروئ:
Public Sub HighlightDupesCaseSensitive() Dim Cell as Range Dim Delimiter as String Delimiter = InputBox( "هغه حد داخل کړئ چې په حجره کې ارزښتونه جلا کوي" , "delimiter" , ", " ) د هر یو لپاره Cell in Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True) بل پای Sub Sub HighlightDupeWordsInCell(حجره د رینج په توګه، اختیاري ډیلیمیټر د سټرینګ په توګه = "" , اختیاري قضیه حساس لکه بولین = ریښتیا) د متن متن Dim په توګه د سټینګ ډیم متن کلمه د String په توګه Dim wordIndex، matchCount، positionInText د عدد په توګه که CaseSensitive وي نو کلمې = Split(Cell.Value، Delimiter) نورې کلمې = Split(LCase(Cell.Value)، Delimiter) پای که د WordIndex لپاره = LBound (کلمو) ته UBound ( ټکي) - 1 کلمه = کلمې(wordIndex) matchCount = 0 for nextWordIndex = wordIndex + 1 ته UBound (کلمو) که کلمه = ټکي (nextWordIndex) نو matchCount = matchCount + 1 End که راتلونکی nextWordIndex که matchCount > 0 بیا متن = "" د Index = LBound (کلمو) لپاره UBound (کلمو) متن = متن & کلمې (انډیکس) که (کلمې(انډیکس) = کلمه) نو بیا Cell.Characters(Len(text) - Len(word) + 1، Len(word)).Font.Color = vbRed پای که متن = متن او amp; د بل پای محدود کړئ که د Next wordIndex End Subپه Excel کې د نقل شوي ټکي روښانه کولو لپاره د میکرو کارولو څرنګوالی
که تاسو د VBA کارولو پیل کونکی یاست ، لاندې ګام په ګام لارښوونې به تاسو په آرامۍ سره پرمخ بوځي. . تجربه لرونکي کاروونکي کولی شيیوازې د ډاونلوډ لینک غوره کړئ او پاتې یې پریږدئ :)
خپل کاري کتاب کې کوډ اضافه کړئ
تاسو په خپل ایکسل کاري کتاب کې د میکرو کوډ داخلولو سره پیل کوئ. دلته یې څنګه دی:
- د کار کتاب پرانیزئ چیرې چې تاسو غواړئ ډوپس روښانه کړئ.
- د Visual Basic Editor د پرانستلو لپاره Alt + F11 فشار ورکړئ.
- په چپ اړخ کې، دا کاري کتاب ښیې کلیک وکړئ او د شرایطو مینو څخه داخل کړئ > موډول غوره کړئ.
- د کوډ کړکۍ کې کوډ پیسټ کړئ.
- د راتلونکي کارونې لپاره د میکرو ساتلو لپاره، ډاډ ترلاسه کړئ چې خپل کاري کتاب د میکرو فعال شوي .xlsm فایل په توګه خوندي کړئ.
په بدیل سره، تاسو کولی شئ زموږ د نمونې کاري کتاب ډاونلوډ کړئ او له هغه ځایه میکرو چل کړئ. د نمونې کاري کتاب لاندې میکرو لري:
- HighlightDupesCaseInsensitive - سیوري په یوه حجره کې د خط کیسه له پامه غورځوي.
- HighlightDupesCaseSensitive - روښانه کول په حجره کې د خط د قضیې په پام کې نیولو سره.
د لا زیاتو معلوماتو لپاره، مهرباني وکړئ وګورئ چې څنګه په Excel کې د VBA کوډ داخل کړئ.
میکرو چل کړئ
د کوډ سره ستاسو په خپل کاري کتاب کې اضافه شوي یا زموږ د نمونې فایل ډاونلوډ او خلاص شوی، میکرو په دې ډول چل کړئ:
- ستاسو په کاري پاڼه کې، هغه حجرې غوره کړئ چیرې چې تاسو غواړئ نقل متن روښانه کړئ. دا کیدای شي یو رینج یا څو غیر نږدې رینجونه وي.
- Alt + F8 فشار ورکړئ.
- د ګټو میکرو غوره کړئ او چل کړئ کلیک وکړئ.
- میکرو به له تاسو څخه وغواړي چې ډیلیمیټر مشخص کړيدا په ټاکل شوي حجرو کې ارزښتونه جلا کوي. مخکې ټاکل شوی حد (زموږ په قضیه کې کوما او ځای) به په اوتومات ډول د ننوتلو بکس کې څرګند شي. ستاسو د اړتیاو پراساس، تاسو کولی شئ ډیفالټ ډیلیمیټر پریږدئ یا یو بل ټایپ کړئ، او بیا په سمه توګه کلیک وکړئ.
یوه شیبه وروسته، په ټاکل شوي کې ټول نقل شوي تارونه حجرې به په سور رنګ کې سیوري شي (یا ستاسو په کوډ کې هر ډول فونټ رنګ ترتیب شوی وي).
لارښوونه. په یوه حجره کې د ګړندي د نقلونو لرې کولو لپاره، تاسو کولی شئ د ډیپلیکټ فرعي سټینګونو لرې کولو څخه کار واخلئ، یو له ډیری وخت خوندي کولو وسیلو څخه چې زموږ په الټیمیټ سویټ کې شامل دي.
د خپلو اړتیاو لپاره کوډ څنګه تنظیم کړئ
د دې کارونې یادښتونو او د VBA خورا لومړني پوهه سره (یا یوازې لاندې لارښوونې تعقیب کړئ)، تاسو کولی شئ په اسانۍ سره د خپلو اړتیاو سره سم کوډونه بدل کړئ.
په ورته ماډل کې ځای په ځای کړئ
لکه څنګه چې تاسو لیدلی شئ، دواړه میکرو ( HighlightDupesCaseSensitive او HighlightDupesCaseInsensitive ) د HighlightDupeWordsInCell فنکشن ته زنګ ووهئ. د پورته دوو میکرو ترمنځ توپیر یوازې په دریم پیرامیټر (کیس حساس) کې دی چې ذکر شوي فنکشن ته لیږدول شوی.
د قضیې حساس لټون لپاره، دا په ریښتیا ټاکل شوی:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
د قضیې غیر حساس لټون لپاره، دا FALSE ته ټاکل شوی:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
د دې لپاره چې میکرو کار وکړي، د HighlightDupeWordsInCell فنکشن کوډ باید په کې کیښودل شي د ورته ماډل په څیرmacros.
delimiter
کله چې چلیږي، میکرو به له تاسو څخه وغواړي چې هغه حد مشخص کړي چې په ټاکل شوي حجرو کې کلمې/ تارونه جلا کوي. ډیفالټ ډیلیمیټر کوما او ځای ("") دی او دا په انپټ بکس کې وړاندې شوی:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
ستاسو په کوډ کې، تاسو وړیا یاست چې کوم بل کرکټرونه وکاروئ. د مخکینۍ تعریف شوي حد په توګه.
رنګ
د ډیفالټ په توګه، د HighlightDupeWordsInCell فکشن سیوري په سور فونټ رنګ کې نقل کوي. رنګ په دې کرښه کې تعریف شوی:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
دلته، vbRed د VBA رنګ ثابت ډول دی. په بل رنګ کې د ډوپونو ښودلو لپاره، تاسو کولی شئ vbRed د بل ثابت سره بدل کړئ لکه vbGreen، vbYellow، vbBlue، او داسې نور. T هغه د ملاتړ شوي رنګ ثابتو لیست دلته موندل کیدی شي.
دا په Excel حجرو کې د نقل شوي ټکي روښانه کولو څرنګوالی. زه له تاسو څخه د لوستلو لپاره مننه کوم او هیله لرم چې په راتلونکې اونۍ کې زموږ په بلاګ کې وګورم!
د موجود ډاونلوډونه
د کوډ مثالونه چې په حجره کې د نقلونو روښانه کول (.xlsm فایل)
حتمی سویټ 14-ورځ بشپړ فعاله نسخه (.exe فایل)