4 klaidos, kurių reikia vengti programuojant „Excel“ makrokomandas naudojant VBA

4 klaidos, kurių reikia vengti programuojant „Excel“ makrokomandas naudojant VBA

„Microsoft Excel“ jau yra pajėgi duomenų analizės priemonė, tačiau su galimybe automatizuoti pasikartojančias užduotis naudojant makrokomandas rašant paprastą kodą „Visual Basic for Applications“ (VBA), ji yra daug galingesnė. Tačiau netinkamai naudojamas VBA gali sukelti problemų.





Net jei nesate programuotojas, VBA siūlo paprastas funkcijas, leidžiančias pridėti įspūdingų funkcijų prie skaičiuoklių.





Nesvarbu, ar esate VBA guru, kuriantis „Excel“ prietaisų skydelius, ar naujokas, rašantis paprastus scenarijus, atliekančius pagrindinius ląstelių skaičiavimus. Vykdykite šiuos paprastus programavimo būdus, kad išmoktumėte rašyti švarų kodą be klaidų.



Darbo su VBA pradžia

VBA už jus gali padaryti visokių tvarkingų dalykų. Nuo makrokomandų, kurios keičia lapus, rašymo į laiškų siuntimas iš „Excel“ skaičiuoklės naudojant VBA scenarijus jūsų produktyvumas yra labai ribotas.

Jei dar neužprogramavote VBA programoje „Excel“, prieš tai turėsite įgalinti kūrėjo įrankius „Excel“ programoje. Geros naujienos yra tai, kad įgalinti kūrėjo įrankius iš tikrųjų yra gana paprasta. Tiesiog eik į Failas > Galimybės ir tada Tinkinti juostelę . Tiesiog perkelkite Programuotojas skirtuką iš kairės srities į dešinę.



Įsitikinkite, kad žymimasis laukelis įgalino šį skirtuką, o dabar „Excel“ meniu pasirodys skirtukas Kūrėjas.

Lengviausias būdas patekti į kodų rengyklės langą yra tiesiog spustelėti Peržiūrėti kodą mygtuką po Valdikliai kūrėjo meniu.





Dabar esate pasirengęs parašyti VBA kodą! Šiame skirtuke taip pat galėsite pasiekti VBA makrokomandų įrašymas „Excel“ . Dabar, kai „Excel“ yra pasirengusi dirbti, apžvelkime kai kurias įprastas klaidas, kurių reikia vengti, ir būdus, kaip jų išvengti.

1. Siaubingi kintamieji pavadinimai

Dabar, kai esate kodo lange, laikas pradėti rašyti VBA kodą. Pirmasis svarbus daugelio programų žingsnis, nesvarbu, ar tai būtų VBA, ar bet kokia kita kalba, yra jūsų kintamųjų apibrėžimas. Netinkamas kintamųjų įvardijimas yra viena iš dažniausiai pasitaikančių programavimo klaidų, kurias daro nauji kūrėjai.





kaip įdiegti „ubuntu“ „MacBook Pro“

Per kelis dešimtmečius trukusį kodų rašymą aš susidūriau su daugybe minčių, susijusių su kintamųjų pavadinimų taisyklėmis, ir sunkiai išmokau keletą taisyklių. Štai keletas greitų kintamųjų pavadinimų kūrimo patarimų:

  • Padarykite juos kuo trumpesnius.
  • Padarykite juos kuo labiau apibūdinančius.
  • Įveskite jiems kintamojo tipą (loginis, sveikasis skaičius ir kt.).

Štai pavyzdinė ekrano kopija iš programos, kurią dažnai naudoju WMIC „Windows“ skambučiams iš „Excel“ rinkti kompiuterio informaciją.

Jei norite naudoti kintamuosius modulio ar objekto funkcijos viduje (tai paaiškinsiu toliau), turite jį paskelbti kaip „viešą“ kintamąjį, prieš tai nurodydami deklaraciją Viešas . Priešingu atveju kintamieji deklaruojami prieš juos nurodant žodį Nė vienas .

Kaip matote, jei kintamasis yra sveikasis skaičius, jis nurodomas tarpt . Jei tai eilutė, tada p . Tai asmeninė nuostata, kuri padeda vėliau, kai programuojate, nes visada žinosite, kokio tipo duomenis kintamasis turi, žiūrėdami į pavadinimą.

Taip pat būtinai pavadinkite „Excel“ darbaknygės lapus.

Tokiu būdu, kai nurodote lapo pavadinimą „Excel“ VBA kode, turite omenyje pavadinimą, kuris yra prasmingas. Anksčiau pateiktame pavyzdyje turiu lapą, į kurį įtraukiu tinklo informaciją, todėl lapą vadinu „Tinklu“. Bet kuriuo metu, kai noriu pateikti nuorodą į tinklo lapą, galiu tai padaryti greitai, neieškodamas, koks yra lapo numeris.

2. Lūžimas vietoj kilpos

Viena iš dažniausiai pasitaikančių problemų, su kuriomis susiduria naujesni VBA programuotojai, pradėję rašyti kodą, yra tinkamas kilpų tvarkymas.

Ciklas yra labai dažnas „Excel“, nes dažnai apdorojate duomenų reikšmes visoje eilutėje arba stulpelyje, todėl jas reikia apdoroti ciklu.

Nauji programuotojai dažnai nori tiesiog ištrūkti iš ciklo („VBA For loop“ arba „VBA Do While“), kai tikroji sąlyga yra įvykdyta.

Štai pavyzdys, kaip šis metodas naudojamas nutraukti VBA kilpą.

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

Nauji programuotojai laikosi šio požiūrio, nes tai lengva. Stenkitės aiškiai nenutraukti kilpos.

Dažniausiai po šios „pertraukos“ ateinantį kodą svarbu apdoroti. Daug švaresnis ir profesionalesnis būdas susidoroti su sąlygomis, kai norite įveikti ciklą įpusėjus, yra tiesiog įtraukti šią išėjimo sąlygą į kažką panašaus į „VBA While“ teiginį.

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

Tai leidžia logiškai valdyti jūsų kodą. Dabar kodas pereis ir sustos, kai pasieks 6. Nereikia įtraukti nepatogių EXIT arba BREAK komandų viduryje.

3. Masyvų nenaudojimas

Kita įdomi klaida, kurią daro nauji VBA programuotojai, yra bandymas apdoroti viską daugybės įdėtų kilpų viduje, kurios skaičiavimo metu filtruojamos per eilutes ir stulpelius.

Tai taip pat gali sukelti didelių našumo problemų. Kreipimasis į stulpelį ir kaskart išgaunamos vertės yra jūsų procesoriaus žudikas. Efektyvesnis būdas tvarkyti ilgus skaičių sąrašus yra naudoti masyvą.

Jei niekada nesinaudojote masyvu, nebijokite. Įsivaizduokite masyvą kaip ledo kubelių padėklą su tam tikru skaičiumi „kubelių“, į kuriuos galite sudėti informaciją. Kubeliai yra sunumeruoti nuo 1 iki 12, ir taip jūs į juos „įdedate“ duomenis.

Masyvą galite lengvai apibrėžti tiesiog įvedę Dim arrMyArray (12) kaip sveikasis skaičius .

kaip sužinoti, ar telefonas palietė

Taip sukuriamas „padėklas“ su 12 angų, kurias galite užpildyti.

Štai kaip gali atrodyti eilutės ciklo kodas be masyvo:

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

Šiame pavyzdyje kodas apdorojamas kiekviename diapazono langelyje ir apskaičiuojamas temperatūra.

Jei kada nors norėsite atlikti kitą tų pačių verčių skaičiavimą, procesas būtų sudėtingas. Turėtumėte dubliuoti šį kodą, apdoroti visus šiuos langelius ir atlikti naują skaičiavimą. Viskas už vieną pakeitimą!

Štai geresnis pavyzdys, naudojant masyvą. Pirmiausia sukurkime masyvą.

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

The x-1 norint nurodyti masyvo elementą, būtina tik todėl, kad For ciklas prasideda nuo 1. Masyvo elementai turi prasidėti nuo 0.

Dabar, kai turite masyvą, labai paprasta apdoroti turinį.

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

Šis pavyzdys apima visą eilučių masyvą ( UBound pateikia duomenų masyvo verčių skaičių), apskaičiuoja temperatūrą ir perkelia ją į kitą masyvą, vadinamą arrMyTemps .

4. Naudojant per daug nuorodų

Nesvarbu, ar programuojate naudodami visavertį „Visual Basic“, ar VBA, norėdami pasiekti tam tikras funkcijas, turėsite įtraukti „nuorodas“.

Nuorodos yra tarsi „bibliotekos“, užpildytos funkcijomis, kuriomis galite pasinaudoti įjungę tą failą. Nuorodas rasite kūrėjo rodinyje spustelėję Įrankiai meniu, tada spustelėkite Nuorodos .

Šiame lange rasite visas šiuo metu pasirinktas jūsų dabartinio VBA projekto nuorodas.

Turėtumėte patikrinti šį sąrašą, nes nereikalingos nuorodos gali švaistyti sistemos išteklius. Jei nenaudojate jokių manipuliavimo XML failais, tai kodėl palikti „Microsoft XML“ pasirinktą? Jei nebendraujate su duomenų baze, pašalinkite „Microsoft DAO“ ir kt.

Jei nesate tikri, ką daro šios pasirinktos nuorodos, paspauskite F2 ir pamatysite „Object Explorer“. Šio lango viršuje galite pasirinkti nuorodų biblioteką, kurią norite naršyti.

Pasirinkę pamatysite visus objektus ir galimas funkcijas, kurias spustelėję sužinosite daugiau.

Pavyzdžiui, kai spusteliu DAO biblioteką, greitai paaiškėja, kad visa tai yra prisijungimas prie duomenų bazių ir bendravimas su jomis.

Sumažinti programavimo projekte naudojamų nuorodų skaičių yra tiesiog protinga ir tai padės efektyviau veikti visai programai.

programa, kuri nurodo, kokia daina grojama

Programavimas naudojant Excel VBA

Visa idėja iš tikrųjų rašyti kodą „Excel“ gąsdina daugelį žmonių, tačiau ši baimė tikrai nėra būtina. „Visual Basic for Applications“ yra labai paprasta išmokti kalba, o jei laikysitės aukščiau paminėtos įprastos praktikos, įsitikinsite, kad jūsų kodas yra švarus, efektyvus ir lengvai suprantamas.

Tačiau nesustokite ten. Sukurkite tvirtą „Excel“ įgūdžių pagrindą naudodami VBA pamoka pradedantiesiems . Tada toliau mokykitės apie VBA ir makrokomandas naudodami išteklius, kurie padės automatizuoti skaičiuokles.

Dalintis Dalintis „Tweet“ Paštu Ar verta atnaujinti į „Windows 11“?

„Windows“ buvo pertvarkytas. Bet ar to pakanka norint įtikinti jus pereiti nuo „Windows 10“ prie „Windows 11“?

Skaityti toliau
Susijusios temos
  • Produktyvumas
  • Programavimas
  • Programavimas
  • Visual Basic programavimas
  • „Microsoft Excel“
Apie autorių Anthony Grantas(Paskelbti 40 straipsnių)

Anthony Grantas yra laisvai samdomas rašytojas, apimantis programavimą ir programinę įrangą. Jis yra informatikos specialistas, besisukantis programavimo, „Excel“, programinės įrangos ir technologijų srityse.

Daugiau iš Anthony Grant

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia