4 Mga Pagkakamali na Maiiwasan Kapag Programming ang Excel Macros Sa VBA

4 Mga Pagkakamali na Maiiwasan Kapag Programming ang Excel Macros Sa VBA

Microsoft Excel ay isang may kakayahang tool sa pagtatasa ng data, ngunit may kakayahang i-automate ang mga paulit-ulit na gawain sa macros sa pamamagitan ng pagsulat ng simpleng code sa Visual Basic for Applications (VBA) na mas malakas ito. Ginamit nang hindi tama, gayunpaman, ang VBA ay maaaring maging sanhi ng mga problema.





Kahit na hindi ka isang programmer, nag-aalok ang VBA ng mga simpleng pag-andar na nagbibigay-daan sa iyo upang magdagdag ng kahanga-hangang pagpapaandar sa iyong mga spreadsheet.





Hindi mahalaga kung ikaw ay isang VBA guru na lumilikha ng mga dashboard sa Excel, o isang newbie na sumusulat ng mga simpleng script na gumagawa ng pangunahing mga kalkulasyon ng cell. Sundin ang mga simpleng diskarte sa pag-program na ito upang malaman kung paano magsulat ng malinis, walang code na code.





Pagsisimula Sa VBA

Maaaring gawin ng VBA ang lahat ng mga uri ng maayos na bagay para sa iyo. Mula sa pagsusulat ng macros na nagbabago ng mga sheet sa pagpapadala ng mga email mula sa isang Excel spreadsheet gamit ang mga script ng VBA may mga kaunting mga limitasyon sa iyong pagiging produktibo.

Kung hindi mo pa nai-program sa VBA sa Excel bago mo kailanganing paganahin ang mga tool ng Developer sa iyong programa sa Excel. Ang magandang balita ay, ang pagpapagana ng mga tool ng Developer ay talagang medyo madali. Punta ka na lang File > Mga pagpipilian at pagkatapos Ipasadya ang Ribbon . Ilipat lang ang Developer tab mula sa kaliwang pane sa kanan.



Tiyaking pinagana ng checkbox ang tab na ito, at ngayon lalabas ang tab ng Developer sa iyong menu ng Excel.

Ang pinakamadaling paraan upang makapunta sa window ng editor ng code mula dito ay mag-click lamang sa Tingnan ang Code pindutan sa ilalim Mga Kontrol sa menu ng Developer.





Handa ka na ngayong magsulat ng VBA code! Ang tab na ito ay kung saan mai-access mo ang VBA pati na rin nagre-record ng macros sa Excel . Ngayon na handa nang gumana ang Excel tingnan natin ang ilang mga karaniwang pagkakamali upang maiwasan, at ang mga paraan upang maiwasan ito.

1. Kakila-kilabot na Mga Pangalan ng Variable

Ngayon na nasa code window ka, oras na upang simulang magsulat ng VBA code. Ang unang mahalagang hakbang sa karamihan ng mga programa, maging sa VBA o anumang iba pang wika, ay ang pagtukoy sa iyong mga variable. Ang hindi maayos na pagbibigay ng pangalan ng mga variable ay isa sa mga pinakakaraniwang pagkakamali sa pagprograma na ginagawa ng mga bagong developer.





pinakamahusay na lugar upang mag-download ng mga libreng ebook

Sa buong dekada kong pagsulat ng code, napag-alaman ko ang maraming mga paaralan ng pag-iisip pagdating sa mga variable na pagpapangalan ng mga kombensiyon at natutunan ang ilang mga patakaran sa mahirap na paraan. Narito ang ilang mga mabilis na tip para sa paglikha ng mga variable na pangalan:

  • Gawin silang kasing ikli hangga't maaari.
  • Gawin ang mga ito bilang mapaglarawan hangga't maaari.
  • Ipauna ang mga ito sa variable na uri (boolean, integer, atbp ...).

Narito ang isang sample na screenshot mula sa isang programa na madalas kong ginagamit upang tumawag sa WMIC Windows mula sa Excel upang makalikom ng impormasyon sa PC.

Kung nais mong gamitin ang mga variable sa loob ng isang pagpapaandar sa loob ng module o object (ipapaliwanag ko ito sa ibaba), kung gayon kailangan mong ideklara ito bilang isang 'publiko' na variable sa pamamagitan ng pag-prefacing ng deklarasyon sa Pampubliko . Kung hindi man, ang mga variable ay maaaring ideklara sa pamamagitan ng pag-prefacing sa mga ito ng salita Wala .

Tulad ng nakikita mo, kung ang variable ay isang integer na paunang salita sa int . Kung ito ay isang string, kung gayon p . Ito ay isang personal na kagustuhan na makakatulong sa paglaon habang nagprogram ka dahil palagi mong malalaman kung anong uri ng data ang hawak ng variable sa pamamagitan ng pagsulyap sa pangalan.

Gayundin, tiyaking pangalanan ang mga sheet sa iyong workbook ng Excel.

Sa ganitong paraan, kapag sumangguni ka sa pangalan ng sheet sa iyong Excel VBA code, tumutukoy ka sa isang pangalan na may katuturan. Sa halimbawa sa itaas, mayroon akong isang sheet kung saan ako kumukuha ng impormasyon sa Network, kaya tinawag ko ang sheet na 'Network'. Anumang oras na nais kong sanggunian ang sheet ng Network, magagawa ko ito nang mabilis nang hindi hinahanap kung ano ang numero ng sheet.

2. Breaking Instead of Looping

Ang isa sa mga pinaka-karaniwang problema ng mga mas bagong programmer ng VBA kapag nagsimula silang magsulat ng code ay maayos na pagharap sa mga loop.

Ang pag-loop ay napaka-pangkaraniwan sa Excel dahil madalas na pinoproseso mo ang mga halaga ng data pababa sa isang buong hilera o isang haligi, kaya kailangan mong mag-loop upang maproseso ang lahat ng mga ito.

Ang mga bagong programmer ay madalas na nais na lamang masira ang isang loop (VBA Para sa mga loop o VBA Do Habang ang mga loop) agad kapag ang isang tiyak na kondisyon ay totoo.

Narito ang isang halimbawa ng pamamaraang ito na ginagamit upang masira ang isang loop ng VBA.

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

Ginagawa ng mga bagong programmer ang diskarte na ito sapagkat madali ito. Subukan at iwasang tahasang masira ang isang loop.

Mas madalas kaysa sa hindi, ang code na darating pagkatapos ng 'break' na iyon ay mahalaga na iproseso. Ang isang mas malinis at mas propesyonal na paraan upang hawakan ang mga kundisyon kung saan nais mong iwanan ang isang loop sa kalahati lamang upang maisama ang exit na kondisyon sa isang bagay tulad ng isang pahayag ng VBA Habang.

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

Pinapayagan nito ang isang lohikal na daloy ng iyong code. Ngayon ang code ay tatakbo sa pamamagitan at hihinto sa sandaling umabot sa 6. Hindi na kailangang isama ang mahirap na EXIT o BREAK na mga utos sa gitna ng loop.

3. Hindi Paggamit ng Mga Array

Ang isa pang kagiliw-giliw na pagkakamali na nagagawa ng mga bagong programmer ng VBA ay sinusubukan na iproseso ang lahat sa loob ng maraming mga pugad na mga loop na nag-filter sa pamamagitan ng mga hilera at haligi sa proseso ng pagkalkula.

Maaari rin itong humantong sa mga pangunahing problema sa pagganap. Ang pag-loop sa pamamagitan ng isang haligi at pagkuha ng mga halaga sa bawat solong oras ay isang killer sa iyong processor. Ang isang mas mahusay na paraan upang hawakan ang mahabang listahan ng mga numero ay ang paggamit ng isang array.

Kung hindi ka pa nakakagamit ng isang array dati, huwag kang matakot. Mag-isip ng isang array bilang isang tray ng ice cube na may isang tiyak na bilang ng mga 'cube' na maaari mong ilagay sa impormasyon. Ang mga cube ay may bilang na 1 hanggang 12, at ganyan mo 'inilagay' ang data sa kanila.

Madali mong matutukoy ang isang array sa pamamagitan lamang ng pagta-type Dim arrMyArray (12) bilang Integer .

kung paano mag-rip ng audio mula sa isang video

Lumilikha ito ng isang 'tray' na may magagamit na 12 mga puwang para sa iyo upang punan.

Narito kung ano ang maaaring magmukhang isang hilera na looping code nang walang isang array:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

Sa halimbawang ito, pinoproseso ang code sa bawat solong cell sa saklaw at ginaganap ang pagkalkula ng temperatura.

Kung nais mong gumanap ng ilang iba pang pagkalkula sa parehong mga halaga ang proseso ay magiging clunky. Kakailanganin mong madoble ang code na ito, iproseso pababa sa lahat ng mga cell na ito, at isagawa ang iyong bagong pagkalkula. Lahat para sa isang pagbabago!

Narito ang isang mas mahusay na halimbawa, gamit ang isang array. Una, lumikha tayo ng array.

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

Ang x-1 para sa pagturo sa elemento ng array ay kinakailangan lamang dahil ang Para sa loop ay nagsisimula sa 1. Ang mga elemento ng Array ay kailangang magsimula sa 0.

Ngayon na mayroon ka ng array napaka-simple upang iproseso ang mga nilalaman.

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

Ang halimbawang ito ay dumaan sa buong hanay ng hilera ( UBound nagbibigay sa iyo ng bilang ng mga halaga ng data sa array), ginagawa ang pagkalkula ng temperatura, at pagkatapos ay inilalagay ito sa isa pang array na tinawag arrMyTemps .

4. Paggamit ng Napakaraming Sanggunian

Kung ikaw ay nagprograma sa ganap na Visual Basic o VBA, kakailanganin mong isama ang mga 'sanggunian' upang ma-access ang ilang mga tampok.

Ang mga sanggunian ay uri ng tulad ng 'mga aklatan' na puno ng pag-andar na maaari mong i-tap kung pinagana mo ang file na iyon. Maaari mong makita ang Mga Sanggunian sa view ng Developer sa pamamagitan ng pag-click sa Mga kasangkapan sa menu at pagkatapos ay mag-click sa Mga Sanggunian .

Ang mahahanap mo sa window na ito ay ang lahat ng kasalukuyang napiling mga sanggunian para sa iyong kasalukuyang proyekto sa VBA.

Dapat mong suriin ang listahang ito dahil ang mga hindi kinakailangang sanggunian ay maaaring mag-aksaya ng mga mapagkukunan ng system. Kung hindi ka gumagamit ng anumang pagmamanipula ng XML file, bakit pa pinipili ang Microsoft XML? Kung hindi ka nakikipag-usap sa isang database, pagkatapos alisin ang Microsoft DAO, atbp.

Kung hindi ka sigurado kung ano ang ginagawa ng mga napiling sanggunian na ito, pindutin F2 at makikita mo ang Object Explorer. Sa tuktok ng window na ito, maaari kang pumili ng sanggunian library upang mag-browse.

Kapag napili, makikita mo ang lahat ng mga bagay at magagamit na pag-andar, na maaari mong i-click upang matuto nang higit pa tungkol sa.

Halimbawa, kapag nag-click ako sa library ng DAO mabilis na nalilinaw na ang lahat ay tungkol sa pagkonekta sa at pakikipag-usap sa mga database.

Ang pagbawas ng bilang ng mga sanggunian na iyong ginagamit sa iyong proyekto sa pagprograma ay mabuting katuturan lamang, at makakatulong na mas mahusay na tumakbo ang iyong pangkalahatang aplikasyon.

100 ng disk na ginagamit windows 10

Programming sa Excel VBA

Ang buong ideya ng talagang pagsulat ng code sa Excel ay nakakatakot sa maraming tao, ngunit ang takot na ito ay talagang hindi kinakailangan. Ang Visual Basic para sa Mga Aplikasyon ay isang napaka simpleng wika upang malaman, at kung susundin mo ang pangunahing mga karaniwang kasanayan na nabanggit sa itaas, tiyakin mong malinis, mahusay, at madaling maunawaan ang iyong code.

Huwag tumigil doon. Bumuo ng isang malakas na pundasyon ng mga kasanayan sa Excel sa isang VBA tutorial para sa mga nagsisimula . Pagkatapos ay patuloy na matuto tungkol sa VBA at macros na may mga mapagkukunan upang matulungan kang i-automate ang iyong mga spreadsheet.

Magbahagi Magbahagi Mag-tweet Email Ito ba ay Worth Upgrading sa Windows 11?

Ang Windows ay muling idisenyo. Ngunit sapat na ba iyon upang kumbinsihin kang lumipat mula sa Windows 10 patungong Windows 11?

Basahin Susunod
Mga Kaugnay na Paksa
  • Pagiging produktibo
  • Programming
  • Programming
  • Visual Basic Programming
  • Microsoft Excel
Tungkol sa May-akda Anthony Grant(40 na Artikulo Nai-publish)

Si Anthony Grant ay isang freelance na manunulat na sumasaklaw sa Programming at Software. Isa siyang pangunahing agham sa Computer Science sa pag-program, Excel, software, at teknolohiya.

Higit pa Mula kay Anthony Grant

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe