Excel-də "Klikləyin və sürükləyin" ilə Layihə Cədvəlini necə yaratmaq olar

İndi paylaş:

Aşağıdakı məqalədə təqvimi necə qeyd etmək və sorğulamaq olar siçan. Siçan ilə Təqvimi İşarələyin və Sorğulayın

*Real dünyada biz verilənlər bazasına mənalı gündəlik qeydlərini oxumaq və yazmaq üçün bir forma açardıq. Bu məşq sadəcə olaraq sağa_klikləmənin mexanikasını açır və iş vərəqinin özündən təfərrüatları tapır.

Başlamazdan əvvəl elektron cədvəl haqqında bir neçə kəlmə izahat verəcəyik, onun iş modeli tapıla bilər burada.Elektron Cədvəl Haqqında Bir neçə Söz

Proses

Şəbəkədəki xananın üzərinə klikləməklə həmin xana vurğulanacaq və dəyəri dəyişəcək. Klikləyin və sürükləyin, aralığı vurğulayacaq və onun dəyərlərini dəyişəcək. Hüceyrə doldurulubsa, o, təmizlənəcək, əks halda, bu halda "*" işarəsi ilə doldurulacaq.

Əksinə sağa_klik seçilmiş xanadan məlumat tələbidir.

Bir neçə modulla birlikdə əsasən iki hadisə istifadə olunur.

  • Worksheet_SelectionChange xana və ya xana seçildikdə çağırılır.
  • İş səhifəsi_Sağ Klikdən əvvəl siçanın sağ düyməsi ilə çağırılır.

Problem

Hüceyrəni sağa_klikləmək də seçim, tetiklemeyi təşkil edir Seçimdəyişmə. Biz həmin hadisənin öz gedişatına icazə verməliyik, nəzarəti ələ keçirməzdən əvvəl seçilmiş hüceyrəni təmizləyəcəyik BeforeRightClick hadisəsi, təmizlənmiş xananı yenidən dolduracağımız zaman. Amma bu hərəkəti tetikleyecek Seçim dəyişdirildi hadisəni yenidən təmizləmək üçün dayandırılmalıdır.

Bunu biz blnLoading adlı boolean bayrağı ilə edəcəyik.

Tədbirlər

İş vərəqinin arxasındakı kod pəncərəsinə aşağıdakıları daxil edin (yəni modulda deyil).

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

Bu, iki Hadisənin qayğısına qalır.

İstinad Kodu

Koda aşağıdakı, məskunlaşma və boşalma diapazonlarını əlavə edin:

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

Şəbəkə xətlərinin saxlanması

Proqrama modul daxil edin. Şəbəkənin görünüşünü qorumaq üçün aşağıdakı kodu əlavə edin. Bu, makro yazıcıdan, ehtiyatlardan və hər şeydən kopyalanıb.

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

Fəlakətdən qorunma

Excel ilə çox məşğul olan hər kəs bilir ki, mürəkkəb xlsm cədvəlləri zaman-zaman sıradan çıxa bilər və açılmış sənədi zədələyə bilər. Gözləniləndən daha çox hallarda zədələnmiş iş kitabı Excel-in bərpa prosedurları ilə bərpa edilə bilməz. Yedəkləmə yoxdursa, görülən iş itirilir. Bunun qarşısını aşağıdakıları yerinə yetirmək üçün hazırlanmış alətlərlə almaq olar. Excel düzəlişi.

Müəllif Giriş:

Feliks Hooker məlumatların bərpası üzrə mütəxəssisdir DataNumendaxil olmaqla məlumatların bərpası texnologiyaları üzrə dünya lideri olan , Inc rar təmiri və sql bərpa proqram məhsulları. Ətraflı məlumat üçün ziyarət edin www.datanumen.com

İndi paylaş:

Şərhlər bağlıdır.