Cum se creează un program de proiect cu „Click-and-Drag” în Excel

Următorul articol arată cum să marcați și să interogați un calendar cu mouse-ul. Marcați și interogați un calendar cu mouse-ul

*În lumea reală, am deschide un formular pentru a citi și a scrie intrări semnificative din jurnal într-o bază de date. Acest exercițiu dezvăluie pur și simplu mecanica clicului dreapta și găsește detaliile din foaia de lucru în sine.

Înainte de a începe, câteva cuvinte de explicație despre foaia de calcul, al cărei model de lucru poate fi găsit aici.Câteva cuvinte de explicație despre foaia de calcul

Procesul de

Făcând clic pe o celulă din grilă, aceasta va evidenția celula și îi va schimba valoarea. Făcând clic și trageți, va evidenția un interval și va modifica valorile acestuia. Dacă o celulă este populată, aceasta va fi ștearsă, în caz contrar va fi populată, în acest caz cu un „*”.

În schimb, un clic dreapta este o solicitare de informații din celula selectată.

În esență, sunt utilizate două evenimente, împreună cu mai multe module.

  • Worksheet_SelectionChange care este numit atunci când o celulă sau celule sunt selectate.
  • Foaia de lucru_BeforeRightClick care este apelat de butonul din dreapta al mouse-ului.

Problema

Făcând clic dreapta pe o celulă constituie și o selecție, declanșare SelectionChange. Va trebui să lăsăm acel eveniment să-și urmeze cursul, ștergând celula selectată înainte de a preda controlul BeforeRightClick, când vom repopula celula șters. Dar această acțiune va declanșa SelectionChanged eveniment din nou, care trebuie oprit din nou pentru a-l șterge.

Acest lucru îl vom face cu un steag boolean numit blnLoading.

Evenimentele

Introduceți următoarele în fereastra de cod din spatele foii de lucru (adică nu într-un modul).

Opțiune Explicit Dim blnLoading As Boolean Dim sPhase As String Dim currCellValue Ca șir Dim dDate As Data Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dacă ActiveCell.Row > 14 Și ActiveCell.Row < 25 Atunci Dacă ActiveCell.Column > 4 Și ActiveCell.Column < 47 Atunci selecția este validă La eroare Reluare Următorul currCellValue = Tarobține.Valoare 'obține tarobțineți valoare de la (ByVal Target As Range) Dacă blnLoading = True Atunci „o valoare True va forța o ieșire din acest eveniment blnLoading = False Exit Sub End If sPhase = Cells(ActiveCell.Row, 1) If sPhase = "" Then Exit Sub If ActiveCell = " *" Apoi, 'dacă celula este populată, ștergeți intervalul selectat Apelați ClearRange Apelați UnblockCalendar Altceva Apelați PopulateRange End If Call RedrawCells Range ("A1"). Selectați „reactivați evenimentul SelectionChange schimbând selecția. Exit Sub End If End If End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If currCellValue = "*" Apoi este preluat de evenimentul anterior ÎNAINTE de a-l șterge; „Aceasta înseamnă că aceasta este o înregistrare validă în jurnal, cu detalii. blnLoading = Adevărat „acest lucru va împiedica rularea evenimentului SelectionChange (mai sus).
        Target.Selectează „currCell = Target.Address 'Range(currCell).Select

            Target.Value = "*" 'reintroduceți valoarea celulei, deoarece SelectionChange a șters-o Apel PopulateRange dDate = Cells(13, ActiveCell.Column) sPhase = Cells(ActiveCell.Row, 1) MsgBox dDate & " - " & sPhase Cancel = Adevărat „suprimă meniurile standard de clic dreapta ale Excel End If Range("A1"). Selectați blnLoading = False End Sub

Aceasta are grijă de cele două Evenimente.

Codul de referință

Adăugați următoarele intervale de populare și depopulare la cod:

Sub ClearRange() Selection.FormulaR1C1 = "" Cu Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub Sub PopulateRange() Selection.FormulaR1C1 = "*" Cu Selection.Interior = xl .Solidn =. PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = 0.799981688894314 .PatternTintAndShade = 0 End With End Sub

Întreținerea liniilor de grilă

Introduceți un modul în aplicație. Adăugați următorul cod pentru a menține aspectul grilei. Acesta a fost copiat de pe macro recorder, redundanțe și tot.

Opțiune Explicit Sub UnblockCalendar() Selection.FormulaR1C1 = "" Cu selecție Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).ExlEdgeLeft). .LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideSorizontal). () Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Cu Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAnd.We End = Cu xlThin. Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .Tintl With Selection. Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .ColorIndex = 0 .Tintl0And.Weight =Tintl0Thin. Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End Sub

Protecția împotriva catastrofei

Oricine face multe dezvoltări Excel va ști că foile de calcul xlsm complexe se pot bloca din când în când, corupând documentul deschis. În mai multe cazuri decât ar fi de așteptat, registrul de lucru deteriorat nu poate fi recuperat de rutinele de recuperare ale Excel. Dacă nu există copii de rezervă, munca efectuată este lost. Acest lucru poate fi prevenit cu instrumente concepute pentru a funcționa Remediere Excel.

Introducerea autorului:

Felix Hooker este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv rar repara și produse software de recuperare sql. Pentru mai multe informații vizitați www.datanumen.com

Un răspuns la „Cum se creează un program de proiect cu „Click-and-Drag” în Excel”

  1. Nu sunt sigur de unde îți iei informațiile, dar un subiect grozav. Trebuie să petrec ceva timp învățând mai mult sau înțelegând mai mult.
    Mulțumesc pentru informații minunate căutam aceste informații pentru misiunea mea.

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *