Total Pageviews

Saturday, 19 May 2018

MACRO - 3 FOR.....NEXT LOOP AND MESSAGE BOX



MACRO - 3 FOR.....NEXT LOOP AND  MESSAGE BOX

முதல் இரண்டு அத்தியாயங்களில் MACRO என்றால் என்ன, அதில் உள்ள OBJECTகள், எப்படி செலக்ட் செய்வது, அவற்றிற்கு உள்ளீடு அளிப்பது,  உருவாக்கும் MACRO வை பதிவு செய்வது, அதற்கு குறுக்கு வழி (SHORTCUT) அமைப்பது மற்றும் எங்கு சேமிக்கவேண்டும் என்பதையெல்லாம் பார்த்தோம்MACRO உள்ள கோப்புகளை சேமிக்கும்போது .XLSM என்ற (EXTENSION TYPE) வகையில் சேமிக்க வேண்டும்.

முதல் அத்தியாயத்தில் FOR ..... NEXT என்று ஒரு LOOP உபயோகித்துள்ளோம்.  அதைப்பற்றி கொஞ்சம் பார்க்கலாம். ஒரு செயல்முறை திருப்பி திருப்பி செய்ய வேண்டுமென்றால், அதுவும் எத்தனை முறை செயல்பட வேண்டும் என்று நிச்சயமாக தெரியும்போது FOR ...... NEXT  லூப்பை உபயோகிக்கலாம்.

ஒரு ஐம்பது  செல்களில் ஒன்று, இரண்டு என்று வரிசையாக எழுத வேண்டும். இதை பின்வருமாறு எழுகலாம்.

A10 ல் ஆரம்பிப்போம்.
SUB SLNO()
[A10].VALUE=1
[A11].VALUE=2
[A13].VALUE=3
[A14].VALUE=4 
' இதைப்போல் 50 மதிப்பு வரும் வரையில் வரிசையாக எழுதவேண்டும் 
END SUB


SUB SLNO()
' USAGE OF FOR AND NEXT
[A10].SELECT
FOR I = 1 TO 50
ACTIVECELL.VALUE=I
ActiveCell.Offset(1, 0).Select
NEXT I
END SUB 



முதல் MACRO வையும் இரண்டாவது MACRO வையும் கவனியுங்கள்.  முதலில் உள்ளதில் 50 வரிசைகள் எழுத வேண்டியுள்ளது.  இரண்டாவதில் ஐந்து வரிசைகளில் அடங்கிவிட்டது.  மறுபடியும் மறுபடியும் செய்ய வேண்டிய வரிகள் லூப்பில் உள்ளன. எவ்வளவு தடவைகள் செய்யவேண்டும், எதிலிருந்து ஆரம்பிக்கவேண்டும் என்பவைகள் நிச்சயிக்கப்பட்டுவிட்டன.

மேலே இரண்டாவது வரியின் ஆரம்பத்தில் ஒற்றைக்குறி ( ' ) இட்ட வரியை கவனியுங்கள்.  ஒரு வரியின் ஆரம்பத்தில் ஒற்றைக்குறியிட்டால் அவ்வரியானது நிரலல்ல, ஒரு குறிப்பு என்று குறிக்கும் (not a program statement, it is a remark - for programmer's information). இது பயனீட்டாளர்களுக்கு உதவுவதற்காக .

  ActiveCell.Offset(1, 0).Select  

தற்போது இருக்கும் நிலையிலிருந்து எந்த பக்கம் நகரவேண்டும் என்பதைக் குறிப்பத்து தான்    



ActiveCell என்பது தற்போது கர்சர் இருக்குமிடம்.

Offset(1, 0) என்பது கீழே ஒருவரிசை நகரவேண்டும்.  பத்தி அதே பத்தியில்தான் இருக்க வேண்டும்.

தற்போது A10 ல் இருக்கும் கர்சர் ஒரு வரி கீழே அதாவது A11 க்கு வரும்.

Offset(-1, 0) அதே பத்தியில் ஒரு வரி மேலே 
Offset(1, 1)  அடுத்த வரியில் அடுத்த பத்தியில் (வலது பக்கமாக)
Offset(0, 1) அதே வரியில் வலது பக்கமாக ஒரு செல் நகர 
Offset(-10, 1) வலது பக்கமாக ஒரு செல் நகர்ந்து பத்து செல்கள் மேலே போகவேண்டும் 

மற்றுமொரு உதாரணத்தைப்  பார்ப்போம்.


TABLE ஒன்று தயார் செய்வோம்.

Sub TABLES()
[A1].Value = "T  A  B  L  E  S"
[A2].Select
For I = 1 To 10
ActiveCell.Value = I & " * " & 1 & " = " & I
ActiveCell.Offset(1, 0).Select
Next I
End Sub 

A1 ல் "T  A  B  L  E  S" என்பதை உள்ளீடாக கொடுக்கிறோம்.
A2 வை செலக்ட் செய்கிறோம் 

FOR LOOP ஐ ஒன்றிலிருந்து பத்து தடவை கீழே உள்ள கட்டளைகளை செய்யச் சொல்கிறோம்.

தற்போது இருக்கும் செல்லின் மதிப்பை  I & " * " & 1 & " = " & I என்று எழுதப் சொல்கிறோம்.

(அதாவது முதல் சுற்றில் I =1, & ( & என்பது அத்துடன் என்று பொருள்படும்.  முதலில் இருப்பவற்றோடு  பின் வருபவற்றையும் சேர்த்துக்கொள் .  ஆக 1 * 1 = 1 என்றும், இரண்டாவது சுற்றில் 2 * 1=2......) ( & இதை concotanete operator என்று சொல்வார்கள்.)


இதை செயல்படுத்தினால் (RUN ) 

என்று வரும்.


இந்த MACRO வை கொஞ்சம் மேம்படுத்துவோம் 

பத்து TABLES எழுதுவோம்.


Sub TABLES()
[A1].Value = "T  A  B  L  E  S"
[A2].Select
For i = 1 To 10
For j = 1 To 10
ActiveCell.Value = j & " * " & i & " = " & i * j
ActiveCell.Offset(1, 0).Select
Next j
ActiveCell.Offset(-10, 2).Select
Next i
End Sub

விளக்கம் :
•Sub TABLES()
•[A1].Value = "T  A  B  L  E  S"
•[A2].Select
For i = 1 To 10   (ஒன்றிலிருந்து பத்து வாய்ப்பாடுகள் )
For j = 1 To 10   (ஒவ்வொன்றிலும் ஒன்றிலிருந்து பத்து வரை )
ActiveCell.Value = j & " * " & i & " = " & i * j
ActiveCell.Offset(1, 0).Select   (தற்போது இருக்கும் செல்லிலிருந்து ஒரு செல் கீழ் பக்கமாக நகர )
Next j (வாய்ப்பாட்டுக்குள் அடுத்த எண்ணிக்கைக்கு செல்ல) 

ActiveCell.Offset(-10, 2).Select (வாய்ப்பாடு முடிந்தவுடன் பத்து செல்கள்மேல்பக்கமாகவும் இரண்டு செல்கள் வலது பக்கமாகவும் நகரவேண்டும்.)
Next I  (வாய்ப்பாடு முடிந்து அடுத்த வாய்ப்பாட்டிற்கு செல்ல )
End Sub






MESSAGE BOX



MESSAGE BOX என்பது பயனாளருக்கு தகவல் அளிக்கும் ஒரு பெட்டியாகும். சில சமயத்தில் பயனாளருக்கு தகவலை அளிப்பதுடன் அது சம்பந்தமாக எழும் கேள்விகளுக்கு விடையைப்பெறவும் MESSAGE BOX பயன்படுகிறது.

ஒரு சிறிய உதாரணத்தைப் பார்ப்போம். 


மேலே வாய்ப்பாடு தயாரிக்க ஒரு மேக்ரோ எழுதியுள்ளொமல்லவா, அதில் ஒரு சிறிய மாற்றம் செய்வோம்.  நான்காவது வரிக்கு அடுத்தாற்போல் MSGBOX "GOOD MORNING "   என்று எழுதி, புதியதாக ஒரு வரி சேர்க்கப்பட்டுள்ளது என்பது நமக்கு தெரிவதற்காக  ' A NEW LINE ADDED HERE என்று ஒரு குறிப்பையும் சேர்ப்போம்.

Sub TABLES()
[A1].Value = "T  A  B  L  E  S"
[A2].Select
For i = 1 To 10
MSGBOX "GOOD MORNING "   ‘ A NEW LINE ADDED HERE
for j = 1 To 10
ActiveCell.Value = j & " * " & i & " = " & i * j
ActiveCell.Offset(1, 0).Select
Next j
ActiveCell.Offset(-10, 2).Select
Next i
End Sub




இப்போது இந்த மேக்ரோவை செயல்படுத்தி பாருங்கள் (RUN ) செயல்படுத்த மேலே STANDARD TOOLBAR ல் உள்ள முக்கோண குறியிட்ட பட்டனை அழுத்தவும்.









ஒவ்வொரு அட்டவணையும் அச்சு செய்வதற்கு முன்பு message box ல் கொடுத்த தகவல் நமக்கு தோற்றமளிக்கும். அதற்கு ok என்ற பட்டனை அழுத்தினால்தான் அடுத்த செயலுக்கு (வரிக்கு) நகரும்.


இப்போது கொடுத்த வரியிலேயே மற்றொரு மாற்றத்தை செய்வோம்.  MsgBox "GOOD MORNING என்றுள்ளதற்கு பக்கத்தில்  - Now i am going to type table no." & i என்பதை தட்டச்சு செய்யுங்கள். (MsgBox "GOOD MORNING - Now i am going to type table no." & i) . இதில் & i  என்பது மேலே நாம் பயன்படுத்திய மாறிலியில் (variable) உள்ள மதிப்பை காண்பிக்க.




மேலே காணப்படும் Message Box ல் இருக்கும் செய்தியை இரண்டு வரியில் குறிப்பிடுவோமா ? புது வரி சேர்க்க வேண்டுமென்றால் & vbnewline என்று எழுதி, பின் இரண்டாவது வரியில் என்ன வரவேண்டுமோ அதை & (ambersand )  குறிக்கு பின் சேர்க்க வேண்டும்.

அதாவது 

MsgBox "GOOD MORNING -" _
& vbNewLine & "Now i am going to type table no." & i

என்று இருக்கவேண்டும்.  மேலே காணப்படும் வரிகளில் முதல் வரியில் கடைசியில் _ எழுதப்பட்டுள்ளது. ஒரு வரியில் ஒரு statement ஐ (நிரலின் ஒரு வரியை ) முடிக்கமுடியாமல் அடுத்த வரியிலும் தொடர்ந்தால் முதல் வரியின் கடைசியில் _ (underscore ) தட்டச்சு செய்யவேண்டும். (தொடர்கிறது என்று பொருள்)




தொடரும்...........

No comments:

Post a Comment