返回列表 上一主題 發帖

[發問] 用勾選讓儲存格不能等於

本帖最後由 GBKEE 於 2014-2-7 17:39 編輯

回復 4# j88141
試試看
  1. Option Explicit
  2. Private Sub Workbook_Open()    'ThisWorkbook 模組的程式碼,開檔時自動執行
  3.     Dim xWeek, xM, Rng(0 To 2) As Range, i As Integer, ii As Integer
  4.     For Each xM In ActiveWorkbook.Names
  5.         xM.Delete
  6.     Next
  7.     xWeek = Split("星期一,星期二,星期三,星期四,星期五", ",")
  8.     xM = Split("早上,下午,晚上", ",")
  9.    
  10.     With Sheets("課表雛形")
  11.         Set Rng(0) = .Range("D3:D18")       '早上時段  '如有不對請自行修改
  12.         Set Rng(1) = .Range("D19:D34")      '下午時段
  13.         Set Rng(2) = .Range("D35:D42")      '晚上時段
  14.         For i = 0 To 4
  15.             For ii = 0 To 2
  16.                 Rng(ii).Offset(, i).Name = xWeek(i) & xM(ii)
  17.             Next
  18.         Next
  19.     End With
  20. End Sub
複製代碼
"課表雛形" 工作表模組的程式碼
  1. Option Explicit Private
  2. Sub Worksheet_Change(ByVal Target As Range)
  3.     Application.EnableEvents = False
  4.     If 時段(Target) Then Target = ""
  5.     Application.EnableEvents = True
  6. End Sub
  7. Private Function 時段(xRng As Range) As Boolean   '傳回 False 成為 0 ,而 True 成為 -1
  8.     Dim xR As String, N As Name, C As CheckBox
  9.     For Each N In ActiveWorkbook.Names
  10.         If Not Application.Intersect(Range(N), xRng) Is Nothing Then
  11.             xR = N.Name              '取得 星期上下晚的時段
  12.             Exit For
  13.         End If
  14.     Next
  15.     With Sheets("老師不排課時段")
  16.         For Each C In .CheckBoxes
  17.            If .Cells(C.TopLeftCell.Row, 1) = xRng And C = 1 Then
  18.                If xR = .Cells(1, C.TopLeftCell.Column).MergeArea.Cells(1) & C.TopLeftCell.End(xlUp) Then
  19.                     '星期的時段    .Cells(1, C.TopLeftCell.Column).MergeArea.Cells(1)
  20.                     '上下晚的時段  C.TopLeftCell.End(xlUp)
  21.                     時段 = True
  22.                     MsgBox xRng & vbLf & xR & vbLf & "不排課程"
  23.                     Exit For
  24.                 End If
  25.            End If
  26.         Next
  27.     End With
  28. End Function
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題