Excel дээр "Click-and-Drag" ашиглан төслийн хуваарийг хэрхэн үүсгэх вэ

Одоо хуваалцах:

Дараах нийтлэлд календарийг тэмдэглэж, байцаах аргыг харуулав хулгана. Хулгатай хамт хуанли гаргаж тэмдэглэ

* Бодит ертөнцөд бид мэдээллийн санд өдрийн тэмдэглэл хөтлөх утга бүхий бичвэрүүдийг унших, бичих хэлбэрийг нээдэг. Энэхүү дасгал нь баруун товчлуурын механизмыг энгийнээр харуулдаг бөгөөд дэлгэрэнгүй мэдээллийг ажлын хуудаснаас өөрөө олж авдаг.

Эхлэхээсээ өмнө хүснэгтийн талаархи цөөн хэдэн тайлбарыг ажлын загварыг олж болно энд.Хүснэгтийн талаар тайлбарласан цөөн хэдэн үгс

Үйл явц

Сүлжээний доторх нүдэн дээр дарахад тухайн нүд тодорч, түүний утга өөрчлөгдөнө. Дарж чирэх нь мужийг тодруулж утгыг нь өөрчлөх болно. Хэрэв эсийг байрлуулсан бол түүнийг цэвэрлэх болно, эс тэгвээс үүнийг "*" тэмдэгтээр дүүргэх болно.

Үүний эсрэгээр баруун_ товшилт бол сонгосон нүднээс мэдээлэл авах хүсэлт юм.

Үндсэндээ хоёр үйл явдал, хэд хэдэн модулиудын хамт ашигладаг.

  • Ажлын хуудас_СонголтӨөрчил нүд эсвэл нүдийг сонгоход дууддаг.
  • Ажлын хуудас_BeforeRightClick хулганы баруун товчийг дууддаг.

Асуудал

Нүдийг баруун товших нь сонголтыг бүрдүүлдэг Сонголт. Бид энэ үйл явдлыг үргэлжлүүлэн явуулж, бууж өгөхөөс өмнө сонгосон нүдийг цэвэрлэж өгөх ёстой RightRlicClick үйл явдал, бид цэвэрлэсэн нүдийг дахин дүүргэх болно. Гэхдээ энэ үйлдэл нь Сонголт өөрчлөгдсөн үйл явдлыг дахин арилгахыг зогсоох хэрэгтэй.

Үүнийг бид blnLoading нэртэй boolean далбаатай хийх болно.

Үйл явдал

Ажлын хуудасны ард кодын цонхонд дараахь зүйлийг оруулна уу (өөрөөр хэлбэл модульд ороогүй болно).

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

Энэ нь хоёр үйл явдлыг хариуцдаг.

Ашигласан код

Дараах, дүүргэгч, цөөрсөн мужуудыг кодонд нэмнэ үү:

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

Тор шугамуудын засвар үйлчилгээ

Програмд ​​модулийг оруулна уу. Сүлжээний харагдах байдлыг хадгалахын тулд дараах кодыг нэмнэ үү. Үүнийг макро бичигч, цомхотгол, бүгдээс хуулсан.

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

Гамшиг сүйрлээс хамгаалах

Excel хөгжүүлэлтийг их хийдэг хэн бүхэн нарийн төвөгтэй xlsm хүснэгтүүд үе үе гацаж, нээгдсэн баримт бичгийг гэмтээж болзошгүйг мэдэх болно. Хүлээгдэж байснаас илүү олон тохиолдолд гэмтсэн ажлын дэвтрийг Excel-ийн сэргээх горимоор сэргээж чадахгүй. Хэрэв нөөцлөлт байхгүй бол хийгдсэн ажил алдагдана. Үүнийг гүйцэтгэх зориулалттай хэрэгслүүдээр урьдчилан сэргийлэх боломжтой. Excel засах.

Зохиогчийн танилцуулга:

Феликс Хүүкер бол мэдээлэл сэргээх мэргэжилтэн юм DataNumen, Үүнд мэдээлэл сэргээх технологиор дэлхийд тэргүүлэгч, Inc. rar засвар болон sql сэргээх програм хангамжийн бүтээгдэхүүнүүд. Дэлгэрэнгүй мэдээллийг авна уу WWW.datanumen.com

Одоо хуваалцах:

Тайлбарууд нь хаалттай байна.