Căutare

Deschis de: Cooper, 13.08.2002 17:07 | Postări: 34435 | Colaboratori: 1814

excel

„Forumul Excel își propune să ofere un cadru pentru o gamă largă de utilizatori Excel pentru a-și împărtăși experiențele și pentru a-i ajuta.” Următorul rezumat este destinat să vă ajute să puneți întrebarea corectă.

Descrieți problema cu exactitate. Puneți-l într-un mod în care nu numai dvs., ci și expertul înțelege la ce doriți să obțineți un răspuns.

Descrieți versiunea de Excel cu care lucrați. (Sau dacă nu sau nu doar Excel, atunci ce?)

Descrieți felul în care ați început și unde v-ați blocat.

Poate ajuta foarte mult să înțelegeți întrebarea dacă încărcați o imagine care arată ce doriți sau o ilustrează.

Este chiar mai bine să încărcați un exemplar de registru de lucru undeva (de exemplu, data.hu). Vă rugăm să eliminați datele non-publice înainte de încărcare.

Dacă natura sarcinii este astfel, este recomandabil să prezentați stările „înainte” și „după”. (Ce ar trebui să facem ce?)

Dacă trebuie să remediați un cod VBA, copiați partea relevantă. Puteți comenta un cod scurt, mai multe despre acest lucru: http://pastebin.com/

Dacă ceva nu funcționează așa cum ar trebui, introduceți caracteristicile comportamentului anormal, mesajul de eroare și linia de program care a provocat eroarea.

Mulțumesc pentru frumos. Asta am crezut și eu.

Dimensiunea celulei A1: = Ha (B1 = "; "; "TOTUL")

Presupunând că indiferent ce valori sunt în celula B1 și textul din A1 nu califică valorile din B1.

Buna! Aș dori ajutor cu o funcție simplă, dar din păcate nu au știut deloc. Ar însemna doar că, dacă celula B1 este completată, celula A1 ar citi TOT. Desigur, dacă celula B1 nu este completată, acel 0 nu trebuie afișat. Mulțumesc.

Scrieți celula AI2 în loc de AX2 la sfârșitul formulei.

Acest lucru se datorează faptului că copiază în mod implicit conținutul celulei AX2.

Mulțumesc. Dar evenimentul 1 a fost omis, adică în mod implicit durata celulei AI2 trebuie copiată în celula AW2. Ceilalți funcționează bine.

Vreau să cer o formulă funcțională.

AW2 Vreau să includ mai multe potriviri într-o celulă.

1. Conținutul celulei AW2 este egal cu conținutul celulei AI2.

2. Dar dacă celula AX2 este goală, atunci și celula AW2 este goală. (Deci, conținutul celulei AI2 nu este inclus.)

3. Dar dacă celula AC2 conține DA și celula AX2 este goală, introduceți celula AW2 că NU.

Vă mulțumim anticipat pentru ajutor.

Este posibil să fie necesar să vă înregistrați din nou FM20.DLL.

Aici veți găsi o descriere a modului în care a făcut-o cineva (săptămâna trecută).

Uită-te la asta dacă ceva te ajută.

Ambele mașini au același manager de formulare.

Tocmai am citit o soluție, dar nici nu a funcționat. Potrivit meu, puneți caseta text în centrul atenției înainte de a intra. Primele două starturi au fost bune, dar apoi nu a mers la fel.

De asemenea, pot apărea probleme de memorie. Dar cred că dll managerul de formulare poate fi vinovatul în biblioteca de obiecte Win10 MS Forms 2.0 pe 64 de biți (FM20.DLL).

Verificați dacă ambele mașini au aceeași versiune a managerului de formulare.

MS a înlocuit managerul de formulare cândva în 2015, deoarece nu era compatibil cu versiunile mai noi de Excel din anumite motive. Acum nu găsesc firul de reparații lansat oficial din păcate. Pentru această căutare: obiectul este detașat de clienții săi vba

au venit destul de multe hituri.

O formă de utilizator de 10 pagini îmi face viața amară:-)

La deschidere, casetele text ale paginilor trebuie să fie preumplute cu date conform anumitor reguli.

Până acum, am rezolvat acest lucru deschizând o macrocomandă Start în filele cu Cu exemplul de mai sus, completând-o și apoi publicând.

Închis fără deschidere când este deschis pentru o vreme, nici măcar nu este permisă depanarea.

Pe atunci, am crezut că am despărțit părțile din With Multipage și le-am pus pe foi pe rând. Cu alte cuvinte, în Start, am lăsat o singură pagină de completat, celelalte au fost activate făcând clic pe pagină. va fi:-(

Dar aici din când în când tocmai murea din nou. „Obiectul invocat a fost detașat de clienții săi” și a dat acest mesaj de eroare. S-a oprit la cele mai diferite linii. Pe o foaie din detensionare, alta pe utilizator, pe a treia, dacă ar trebui citit ceva din registrul de lucru. Dar există o pagină a cărei listă este completată fără erori după un filtru.

Rata de eroare nu este complet consecventă. Vine cu o deschidere, nu una următoare. De asemenea, am observat că, dacă deschid Excel complet și intru în interfața VBA, faceți dublu clic pe formularul de utilizator și apoi îl rulați, totul este în regulă. Am încercat încărcarea și afișarea opțiunilor de combinat, schimbat, dar nimic. Am eliminat complet Înainte de închidere, astfel încât închiderea să nu interfereze cu nimic sau să o schimbe pentru a se deschide, dar nu găsesc nimic.

Ca rezultat, este posibil să rulez fără erori pe propriul laptop (Win10, Office2019, 32 biți), dar eroarea de mai sus (Win10, Office2016, 32 biți) nu. Între referințele VBA, ambele mașini sunt verificate la fel. Am pus funcții suplimentare pe un „registru” anterior și am planificat să îl configurez pe 1 ianuarie. Lucrurile suplimentare funcționează excelent, această deschidere nenorocită este o prostie.

Cineva are o idee?

„A fost interesant că, dacă am specificat formatul ca„ aaaa.mm.dd ”, nu a funcționat.”

Deoarece macro utilizează un format „internațional” (practic SUA), nu funcționează cu puncte, cratime și așa mai departe. formatul specificat.

A fost din nou o soluție de legătură, dar o voi scrie dacă cineva ar face bine.

Deci, Microsoft DTPickers nu se număra printre „controale suplimentare” și fișierul mscomct2.ocx care îl conține nu a putut fi instalat.

Așa că am pus unul din Textbox, Spinbutton și un CommandButton (sau 10 bucăți pentru întreaga formă).

Când începeți formularul Tb = CDate (Acum)

Sub privat SB_SpinUp ()
Tb.Text = Format (CDate (Tb.Text) + CDate (Tb.SmallChange), "aaaa/mm/dd.")
Sfârșitul Sub

Sub privat SB_SpinDown ()
Tb.Text = Format (CDate (Tb.Text) - CDate (Tb.SmallChange), "aaaa/mm/dd.")
Sfârșitul Sub

La butonul MA (dacă pur și simplu trebuia să vă întoarceți) la nivelul -> Tb = CDate (Acum)

A fost interesant faptul că, dacă am specificat formatul ca „aaaa.mm.dd”, nu a funcționat, dar introduceți formatul punctat cu bare oblice.

Deoarece, de obicei, trebuie să mergeți doar câteva zile, nu ratați afișarea completă a calendarului.

Am verificat, fiecare pe 32 de biți.

Hmm, asta e o întrebare bună. Mulțumesc pentru direcție, voi arunca o privire la acestea.

care birou numărul de biți (64/32)?

VBA DTPickers este o problemă.

Până în prezent, mașinile erau Office 2013 și apoi 2016. Acestea au fost forme grozave din anii precedenți, care includeau DTPickers, printre altele.

Cu câteva săptămâni în urmă, unul dintre colegii mei a primit o nouă mașină care se afla deja în Office 2019 și nu a afișat sau eliminat DTPickers în formularele anterioare deschise cu acesta, pentru că dacă le deschideți cu Office înainte, acele obiecte nu va mai fi acolo.

Nivelul mașinii de acasă este 2019, funcționează fără această eroare.

Este posibil să aveți idei?

Da, este foarte bine:-)

Încercați să utilizați proprietatea Range.Text, care returnează valorile găsite în celulă într-un format vizibil:

Ne luptăm cu însumarea datelor (spațiilor). Luna/persoană specifică - apoi suma tot anul. Am rezumat acest lucru cu o funcție mai puternică.

Este clar că, dacă doriți să rezumați mai mult de 24 de ore, trebuie să alegeți formatul "[ ]: pp".

Acest lucru rezumă bine prețurile în celule.

Scopul este ca o casetă de text cu formular deschis să preia aceste numere însumate și apoi să le afișeze. Dar - în ciuda faptului că formatul prețului este afișat clar în celula citită - introduceți numai valori peste 24 de ore.

Dacă trec la textbox1 = Format (Foi (1) .range ("N14"), "[h]: mm") format, acesta va afișa: ": 12": -O

Cum să citiți bine conținutul celulei în caseta de text?

Mulțumesc, și asta este o idee grozavă, așa o voi face.

Și intru, de asemenea, Enter pentru a rămâne blocat, astfel încât următoarea casetă să poată fi scoasă.

Pentru a face acest lucru, vă sugerez ca setul de culori din evenimentele MouseMove și Enter să fie diferit. Pentru MouseMove pl. roșu pal, roșu puternic pentru Enter. Atâta timp cât utilizatorul tunde doar cu mouse-ul, el/ea prezice maximum un clic intenționat, dar dacă face clic pe control, intră evenimentul ENTER. Nu, și apoi obțineți culoarea de focalizare în controler.

Apoi, resetarea culorii ultimei casete de selectare din cadru trebuie introdusă în următorul eveniment ENTER de control din secvența TAB.

Acest eveniment MouseMove este genial, funcționează.

Dar grupului îi place să cheltuiască dintr-o parte a tastaturii (cu TAB), cealaltă parte cu mouse-ul:-)

Deci, ar fi minunat dacă ați putea lucra amândoi.

Acest lucru funcționează excelent cu o casetă de selectare de sine stătătoare, dar dacă ultimul obiect se află într-un cadru și apoi pasul următor (adică atunci când este focalizat) l) nici măcar nu intră în evenimentul Exit și, astfel, păstrează setul de culori de fundal de la Entern.

Poate că evenimentul MouseMove ar putea fi util, de ex.

Private Sub CheckBox1_MouseMove (Butonul ByVal ca întreg, ByVal Shift ca întreg, ByVal X ca unic, ByVal Y ca unic)
CheckBox1.BackColor = RGB (255, 0, 0)
Sfârșitul Sub

Cu toate acestea, în acest caz, resetarea fundalului este puțin greoaie, deoarece în practic fiecare eveniment de control MouseMove, trebuie plasat un subrutină, care este fundalul de control pentru toate controalele.

Private Sub CheckBox1_MouseMove (Butonul ByVal ca întreg, ByVal Shift ca întreg, ByVal X ca unic, ByVal Y ca unic)

De bază
CheckBox1.BackColor = RGB (255, 0, 0)
Sfârșitul Sub

Sub-implicit privat

'all ctrl.BackColor = -2147483633

Evenimentul ENTER indică faptul că controlul dat a primit ficusul.

Private Sub CheckBox1_Enter ()
CheckBox1.BackColor = RGB (255, 0, 0)
Sfârșitul Sub

EXIT indică pierderea focalizării, astfel încât să puteți reseta lumina de fundal.