VBA³£Óü¼ÇÉ£¨Ò»£© ÏÂÔØ±¾ÎÄ

¹¤×÷±íÖа´Å¥µÄµ¥»÷¹ý³Ì£¬¼ì²éËùÑ¡ÔñµÄµ¥Ôª¸ñÇøÓòÊÇ·ñº¬Óй«Ê½¡£

µÚ2ÐдúÂë·µ»ØËùÑ¡Ôñµ¥Ôª¸ñÇøÓòµÄHasFormulaÊôÐÔÖµ¡£Èç¹ûÇøÓòÖÐËùÓе¥Ôª¸ñ¾ù°üº¬¹«Ê½£¬Ôò¸ÃֵΪTrue£»Èç¹ûËùÓе¥Ôª¸ñ¾ù²»°üº¬¹«Ê½£¬Ôò¸ÃֵΪFalse¡£

µÚ3¡¢4ÐдúÂ룬Èç¹û·µ»ØTrue£¬ËµÃ÷ÇøÓòÖÐËùÓе¥Ôª¸ñ¾ù°üº¬¹«Ê½¡£ µÚ5¡¢6ÐдúÂ룬Èç¹û·µ»ØFalse£¬ËµÃ÷ÇøÓòÖÐËùÓе¥Ôª¸ñ¾ù²»°üº¬¹«Ê½¡£

µÚ7¡¢8ÐдúÂ룬Èç¹ûÊÇ»ìºÏÇøÓò£¬ÔòÏÔʾ°üº¬¹«Ê½µÄµ¥Ôª¸ñµØÖ·£¬Èçͼ xi-1Ëùʾ¡£

ͼ xi-1 ÏÔʾ°üº¬¹«Ê½µÄµ¥Ôª¸ñµØÖ·

3. Åжϵ¥Ôª¸ñ¹«Ê½ÊÇ·ñ´æÔÚ´íÎó

µ±ÐèÒª»ñÈ¡µÄµ¥Ôª¸ñµÄÖµÓɹ«Ê½·µ»ØÊ±£¬¹«Ê½·µ»ØµÄ½á¹û¿ÉÄÜÊÇÒ»¸ö´íÎóÎı¾£¬°üº¬#NULL!¡¢#DIV/0!¡¢#VALUE!¡¢#REF!¡¢#NAME?¡¢#NUM!¡¢#N/AµÈ¡£´Ëʱ£¬µ±µ¥Ôª¸ñ¹«Ê½·µ»Ø½á¹ûΪ´íÎóÎı¾Ê±£¬Èç¹ûÊÔͼͨ¹ýValueÊôÐÔÀ´»ñµÃ¹«Ê½µÄ·µ»Ø½á¹û£¬½«µÃµ½ÀàÐͲ»Æ¥ÅäµÄ´íÎóÐÅÏ¢£¬Èçͼ xi-2Ëùʾ¡£

ͼ xi-2 ¹«Ê½´íÎóµ¼ÖµÄÏûÏ¢

ͨ¹ýRange¶ÔÏóµÄValueÊôÐԵķµ»Ø½á¹ûÊÇ·ñΪ´íÎóÀàÐÍ£¬À´ÅжϹ«Ê½ÊÇ·ñ´æÔÚ´íÎó£¬ÈçÏÂÃæµÄ´úÂëËùʾ¡£

#001 Sub FormulaIsError()

#002 If VBA.IsError(Range(\#003 MsgBox \µ¥Ôª¸ñ´íÎóÀàÐÍΪ:\#004 Else

#005 MsgBox \µ¥Ôª¸ñ¹«Ê½½á¹ûΪ\#006 End If #007 End Sub

´úÂë½âÎö¡°

FormulaIsError¹ý³Ì´úÂëÅжϵ¥Ôª¸ñA1Öй«Ê½½á¹ûÊÇ·ñΪ´íÎó£¬Èç¹ûΪ´íÎóÔòÏÔʾ¸Ã´íÎóÀàÐÍ£¬·ñÔòÏÔʾ¹«Ê½µÄ½á¹û£¬Èçͼ xi-3Ëùʾ¡£

µÚ2ÐдúÂëʹÓÃIsErrorº¯Êý·µ»ØBooleanÖµ£¬Ö¸³ö±í´ïʽÊÇ·ñΪһ¸ö´íÎóÖµ£¬Èç¹û±í´ïʽ±íʾһ¸ö´íÎó£¬ÔòIsErrorº¯Êý·µ»ØTrue£¬·ñÔò·µ»ØFalse¡£

ͼ xi-3 ÏÔʾ¹«Ê½´íÎó½á¹û

4. È¡µÃµ¥Ôª¸ñÖй«Ê½µÄÒýÓõ¥Ôª¸ñ

Èç¹ûÐèҪȡµÃµ¥Ôª¸ñÖй«Ê½µÄÒýÓõ¥Ôª¸ñ¶ÔÏ󣬿ÉÒÔʹÓÃRange¶ÔÏóµÄPrecedentsÊôÐÔ£¬ÈçÏÂÃæµÄ´úÂëËùʾ¡£

#001 Sub RngPrecedent() #002 Dim rng As Range

#003 Set rng = Sheet1.Range(\#004 MsgBox \¹«Ê½ËùÒýÓõĵ¥Ôª¸ñÓУº\#005 Set rng = Nothing #006 End Sub

´úÂë½âÎö£º

ÔÚ¹¤×÷±íµÄC1µ¥Ôª¸ñÖÐдÓй«Ê½¡°SUM(¡°A1:B1¡±)¡±£¬RngPrecedent¹ý³ÌʹÓÃRange¶ÔÏóµÄPrecedentsÊôÐÔÈ¡µÃÆäÒýÓõĵ¥Ôª¸ñA1:B1¡£

PrecedentsÊôÐÔ·µ»ØÒ»¸öRange¶ÔÏ󣬸öÔÏó´ú±íµ¥Ôª¸ñµÄËùÓÐÒýÓõ¥Ôª¸ñ¡£Èç¹ûÓÐÈô¸ÉÒýÓõ¥Ôª¸ñ£¬ÄÇô¸ÃÇøÓò¿ÉÄÜÊǶà¸öµÄÑ¡¶¨ÇøÓò£¨Range ¶ÔÏóµÄÁªºÏ£©¡£

ÔËÐÐRngPrecedent¹ý³Ì½á¹ûÈçͼ xi-4Ëùʾ¡£

ͼ xi-4 È¡µÃÒýÓõ¥Ôª¸ñ

5. ½«µ¥Ôª¸ñÖеĹ«Ê½×ª»»ÎªÊýÖµ

¹¤×÷±íÖÐÈç¹û´æÔÚ¹ý¶àµÄ¹«Ê½½«Ó°Ïì²Ù×÷ËÙ¶È£¬½«µ¥Ôª¸ñÖеĺ¯ÊýÓ빫ʽµÄ½á¹ûת»»ÎªÊýÖµ£¬¿ÉÒÔÌá¸ß¹¤×÷±íÔËËãЧÂÊ£¬ÓÐÏÂÃæ¼¸ÖÖ·½·¨¿ÉÒÔʵÏÖ¡£

ʹÓÃÑ¡ÔñÐÔÕ³ÌùµÄ·½·¨¿ÉÒÔ½«º¯ÊýÓ빫ʽµÄ½á¹ûת»»ÎªÊýÖµ£¬ÈçÏÂÃæµÄ´úÂëËùʾ¡£

#001 Sub SpecialPaste() #002 With Range(\#003 .Copy

#004 .PasteSpecial Paste:=xlPasteValues #005 End With

#006 Application.CutCopyMode = False #007 End Sub

´úÂë½âÎö£º

SpecialPaste¹ý³ÌʹÓÃÑ¡ÔñÐÔÕ³Ìù·½·¨½«µ¥Ôª¸ñÇøÓòµÄ¹«Ê½×ª»»ÎªÊýÖµ¡£ µÚ3ÐдúÂ뽫µ¥Ôª¸ñÇøÓò¸´ÖƵ½¼ôÌù°åÖС£

Ó¦ÓÃÓÚRange¶ÔÏóµÄCopy·½·¨½«µ¥Ôª¸ñÇøÓò¸´ÖƵ½Ö¸¶¨µÄÇøÓò»ò¼ôÌù°åÖУ¬Óï·¨ÈçÏ£º

expression.Copy(Destination)

²ÎÊýexpressionÊDZØÐèµÄ£¬¸Ã±í´ïʽ·µ»ØÒ»¸öRange¶ÔÏó¡£

²ÎÊýDestinationÊÇ¿ÉÑ¡µÄ£¬Ö¸¶¨ÇøÓòÒª¸´ÖƵ½µÄÄ¿±êÇøÓò¡£Èç¹ûÊ¡ÂԸòÎÊý£¬Microsoft Excel ½«°Ñ¸ÃÇøÓò¸´ÖƵ½¼ôÌù°åÖС£

µÚ4ÐдúÂ뽫¼ôÌù°åÖеÄRange¶ÔÏó½ö¸´ÖÆÖµµ½µ¥Ôª¸ñÇøÓòÖС£

Ó¦ÓÃÓÚRange¶ÔÏóµÄPasteSpecial·½·¨½«¼ôÌù°åÖеÄRange¶ÔÏóÕ³Ìùµ½Ö¸¶¨ÇøÓòÖУ¬Óï·¨ÈçÏ£º

expression.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

²ÎÊýexpressionÊDZØÐèµÄ£¬¸Ã±í´ïʽ·µ»ØÒ»¸öRange¶ÔÏó¡£

²ÎÊýPasteÊÇ¿ÉÑ¡µÄ£¬Ö¸¶¨ÒªÕ³ÌùµÄÇøÓò²¿·Ö¡£ÔÚ±¾ÀýÖÐÉèÖÃΪxlPasteValues£¬½ö¸´ÖÆÖµµ½µ¥Ôª¸ñÇøÓòÖС£

ʹÓÃValueÊôÐÔ¿ÉÒÔ½«º¯ÊýÓ빫ʽµÄ½á¹ûת»»ÎªÊýÖµ£¬ÈçÏÂÃæµÄ´úÂëËùʾ¡£

#001 Sub UseValue()

#002 Range(\#003 End Sub

´úÂë½âÎö£º

UseValue¹ý³ÌʹÓÃValueÊôÐÔ½«º¯ÊýÓ빫ʽµÄ½á¹ûת»»ÎªÊýÖµ¡£

ʹÓÃFormulaÊôÐÔ¿ÉÒÔ½«º¯ÊýÓ빫ʽµÄ½á¹ûת»»ÎªÊýÖµ£¬ÈçÏÂÃæµÄ´úÂëËùʾ¡£

#001 Sub UseFormula()

#002 Range(\#003 End Sub

´úÂë½âÎö£º

UseFormula¹ý³ÌFormulaÊôÐÔ½«º¯ÊýÓ빫ʽµÄ½á¹ûת»»ÎªÊýÖµ¡£µ±FormulaÊôÐÔֵΪ·Ç¹«Ê½Ê±£¬·µ»ØµÄ½á¹ûÓëValueÊôÐÔÒ»Ö¡£

xii. µ¥Ôª¸ñÖеÄÅú×¢

1. Åжϵ¥Ôª¸ñÊÇ·ñ´æÔÚÅú×¢

ÔÚVBAÖУ¬¿ÉÒÔÀûÓÃRange¶ÔÏóµÄCommentÊôÐÔÅжϵ¥Ôª¸ñÊÇ·ñ´æÔÚÅú×¢£¬ÈçÏÂÃæµÄ´úÂëËùʾ¡£

#001 Sub HasComment()

#002 If Range(\#003 MsgBox \µ¥Ôª¸ñÖÐûÓÐÅú×¢!\#004 Else

#005 MsgBox \µ¥Ôª¸ñÖÐÅú×¢ÄÚÈÝΪ£º\& Chr(13) & Range(\#006 End If #007 End Sub

´úÂë½âÎö£º

HasComment¹ý³ÌÅжÏA1µ¥Ôª¸ñÊÇ·ñ´æÔÚÅú×¢£¬²¢ÓÃÏûÏ¢¿òÏÔʾÅú×¢ÐÅÏ¢¡£