Si të krijoni një plan projekti me "Kliko-dhe-Zvarrit" në Excel

Artikulli vijues tregon se si të shënoni dhe merrni në pyetje një kalendar me miu Shënoni dhe merrni në pyetje një kalendar me miun

*Në botën reale, ne do të hapnim një formular për të lexuar dhe shkruar shënime domethënëse të ditarit në një bazë të dhënash. Ky ushtrim thjesht zbulon mekanikën e klikimit me të djathtën dhe gjen detajet nga vetë fleta e punës.

Përpara se të fillojmë, disa fjalë shpjegimi në lidhje me tabelën, një model pune i së cilës mund të gjendet këtu.Disa Fjalë Shpjegimi rreth Spreadsheet

Procesi

Klikimi në një qelizë brenda rrjetit do të nxjerrë në pah atë qelizë dhe do të ndryshojë vlerën e saj. Kliko-dhe-zvarrit do të nxjerrë në pah një varg dhe do të ndryshojë vlerat e tij. Nëse një qelizë është e mbushur, ajo do të pastrohet, përndryshe do të plotësohet, në këtë rast me një "*".

Një klik me të djathtën në kontrast është një kërkesë për informacion nga qeliza e zgjedhur.

Në thelb përdoren dy ngjarje, së bashku me disa module.

  • Fleta e punës_Përzgjedhja Ndrysho i cili thirret kur zgjidhet një qelizë ose qeliza.
  • Fletë pune_Para-DjathtasKlikoni i cili thirret me butonin e djathtë të miut.

Problemi

Klikimi me të djathtën në një qelizë gjithashtu përbën një përzgjedhje, duke shkaktuar Zgjedhja Ndryshimi. Ne do të duhet ta lëmë atë ngjarje të rrjedhë, duke pastruar qelizën e përzgjedhur përpara se t'i dorëzojë kontrollin ParaRightClick ngjarje, kur do të ripopullojmë qelizën e pastruar. Por ky veprim do të shkaktojë Përzgjedhja Ndryshuar ngjarje përsëri, e cila duhet të ndalet nga pastrimi i saj edhe një herë.

Këtë do ta bëjmë me një flamur boolean të quajtur blnLoading.

Ngjarjet

Fusni sa vijon në dritaren e kodit prapa fletës së punës (dmth. jo në një modul).

Option Explicit

    Dim blnLoading As Boolean
    Dim sPhase As String
    Dim currCellValue As String
    Dim dDate As Date

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If ActiveCell.Row > 14 And ActiveCell.Row < 25 Then
         If ActiveCell.Column > 4 And ActiveCell.Column < 47 Then 'selection is valid
 
             On Error Resume Next
             currCellValue = Target.Value 'get the target value from (ByVal Target As Range)
 
             If blnLoading = True Then 'a value of True will force an exit from this event
                 blnLoading = False
                 Exit Sub
             End If
 
             sPhase = Cells(ActiveCell.Row, 1)
             If sPhase = "" Then Exit Sub
 
             If ActiveCell = "*" Then 'if the cell is populated, clear the selected range
                 Call ClearRange
                 Call UnblockCalendar
             Else
                 Call PopulateRange
             End If
 
             Call RedrawCells
             Range("A1").Select 'revive the SelectionChange event by changing selection.
             Exit Sub
         End If
     End If
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     If currCellValue = "*" Then   'picked up by the previous event BEFORE it cleared it;
                                     'This means this is a valid diary entry with detail.
        blnLoading = True    'this will prevent the SelectionChange event (above) from running.
        Target.Select
        'currCell = Target.Address
        'Range(currCell).Select

            Target.Value = "*" 're-instate the value of the cell, since SelectionChange has cleared it
            Call PopulateRange
            dDate = Cells(13, ActiveCell.Column)
            sPhase = Cells(ActiveCell.Row, 1)
            MsgBox dDate & " - " & sPhase
        Cancel = True 'suppress Excel’s standard right_click menus
    End If
    Range("A1").Select
        blnLoading = False
End Sub

Kjo kujdeset për dy Ngjarjet.

Kodi i referuar

Shtojini kodit vargjet e mëposhtme, duke populluar dhe shpopulluar:

Sub ClearRange()
     Selection.FormulaR1C1 = ""
     With Selection.Interior
         .Pattern = xlNone
         .TintAndShade = 0
         .PatternTintAndShade = 0
     End With
End Sub

Sub PopulateRange()
     Selection.FormulaR1C1 = "*"
     With Selection.Interior
         .Pattern = xlSolid
         .PatternColorIndex = xlAutomatic
         .ThemeColor = xlThemeColorLight2
         .TintAndShade = 0.799981688894314
         .PatternTintAndShade = 0
     End With
End Sub

Mirëmbajtja e linjave të rrjetit

Futni një modul në aplikacion. Shtoni kodin e mëposhtëm për të ruajtur pamjen e rrjetit. Kjo është kopjuar nga makroregjistruesi, tepricat dhe të gjitha.

Option Explicit

Sub UnblockCalendar()
     Selection.FormulaR1C1 = ""
     With Selection
         Selection.Borders(xlDiagonalDown).LineStyle = xlNone
         Selection.Borders(xlDiagonalUp).LineStyle = xlNone
         Selection.Borders(xlEdgeLeft).LineStyle = xlNone
         Selection.Borders(xlEdgeTop).LineStyle = xlNone
         Selection.Borders(xlEdgeBottom).LineStyle = xlNone
         Selection.Borders(xlEdgeRight).LineStyle = xlNone
         Selection.Borders(xlInsideVertical).LineStyle = xlNone
         Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
     End With
End Sub

Sub RedrawCells()
     Selection.Borders(xlDiagonalDown).LineStyle = xlNone
     Selection.Borders(xlDiagonalUp).LineStyle = xlNone
     With Selection.Borders(xlEdgeLeft)
         .LineStyle = xlContinuous
         .ColorIndex = 0
         .TintAndShade = 0
         .Weight = xlThin
     End With
     With Selection.Borders(xlEdgeTop)
         .LineStyle = xlContinuous
         .ColorIndex = 0
         .TintAndShade = 0
         .Weight = xlThin
     End With
     With Selection.Borders(xlEdgeBottom)
         .LineStyle = xlContinuous
         .ColorIndex = 0
         .TintAndShade = 0
         .Weight = xlThin
     End With
     With Selection.Borders(xlEdgeRight)
         .LineStyle = xlContinuous
         .ColorIndex = 0
         .TintAndShade = 0
         .Weight = xlThin
     End With
     With Selection.Borders(xlInsideVertical)
         .LineStyle = xlContinuous
         .ColorIndex = 0
         .TintAndShade = 0
         .Weight = xlThin
     End With
     With Selection.Borders(xlInsideHorizontal)
         .LineStyle = xlContinuous
         .ColorIndex = 0
         .TintAndShade = 0
         .Weight = xlThin
     End With
End Sub

Mbrojtja nga katastrofa

Kushdo që merret shumë me zhvillimin e Excel-it e di se fletëllogaritjet komplekse xlsm mund të rrëzohen herë pas here, duke dëmtuar dokumentin e hapur. Në më shumë raste nga sa mund të pritet, libri i punës i dëmtuar nuk mund të rikuperohet nga rutinat e rikuperimit të Excel-it. Nëse nuk ka kopje rezervë, puna e bërë humbet. Kjo mund të parandalohet me mjete të dizajnuara për të kryer Rregullimi i Excel-it.

Hyrje e autorit:

Felix Hooker është një ekspert i rikuperimit të të dhënave në DataNumen, Inc., e cila është lider botëror në teknologjitë e rikuperimit të të dhënave, duke përfshirë riparim rar dhe produkte softuerike për rikuperimin sql. Për më shumë informacion vizitoni www.datanumen.com

Komentet janë të mbyllura.