返回列表 上一主題 發帖

資料驗證能做多重選擇嗎

回復 1# ClareWu
試試看:
  1. Option Explicit
  2. '複製被勾選的 個人防護具
  3. Private Sub CommandButton1_Click()
  4.     Dim Rng, rngB As Range, endRow, Row1 As Integer
  5.    
  6.     '從 [A65536] 由下往上找, 直到找到 非空白格 為止的 Row(列數值)
  7.     endRow = [A65536].End(xlUp).Row
  8.    
  9.     '清除欄C
  10.     [C2:C65536] = ""
  11.    
  12.     '設定 rngB 的範圍
  13.     Set rngB = [B2].Resize(endRow, 1)
  14.    
  15.     '對於 rngB 的每一個成員 Rng 來說,
  16.     For Each Rng In rngB
  17.    
  18.         '如果 Rng 的右一格是 "v"
  19.         If Rng = "v" Then
  20.         
  21.             '非空白格 的 下一格 = 空白格
  22.             Row1 = [C65536].End(xlUp).Row + 1
  23.             
  24.             '欄C空白格 的值 = Rng 的左一格 的值
  25.             Cells(Row1, 3) = Rng.Offset(0, -1)
  26.         End If
  27.     Next
  28. End Sub

  29. '利用 欄B 勾選要複製的項目
  30. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  31.     Dim Rng, rngB As Range, endRow As Integer
  32.    
  33.     endRow = [A65536].End(xlUp).Row
  34.     Set rngB = [B1].Resize(endRow, 1)
  35.    
  36.     'Intersect(Target, rngB) 可將 SelectionChange
  37.     '所觸動的有效範圍限制在 rngB 中,
  38.     'rngB Is Nothing→表示 rngB 未被觸動
  39.     'Not Intersect(Target, rngB) Is Nothing
  40.     '→ 表示 rngB 被觸動了(負負得正)
  41.     If Not Intersect(Target, rngB) Is Nothing Then
  42.         If Target = "v" Then
  43.             Target = ""
  44.         Else
  45.             Target = "v"
  46.         End If
  47.     End If
  48. End Sub
複製代碼

TOP

回復 1# ClareWu
直接點選 要選取的項目 更方便
  1. Option Explicit
  2. '複製被勾選的 個人防護具
  3. Private Sub CommandButton1_Click()
  4.     Dim Rng, rngA As Range, endRow, Row1 As Integer
  5.    
  6.     '從 [A65536] 由下往上找, 直到找到 非空白格 為止的 Row(列數值)
  7.     endRow = [A65536].End(xlUp).Row
  8.    
  9.     '清除欄C
  10.     [C2:C65536] = ""
  11.    
  12.     '設定 rngA 的範圍
  13.     Set rngA = [A2].Resize(endRow, 1)
  14.    
  15.     '對於 rngB 的每一個成員 Rng 來說,
  16.     For Each Rng In rngA
  17.    
  18.         '如果 Rng 的右一格是 "v"
  19.         If Rng.Font.ColorIndex = 5 Then
  20.         
  21.             '非空白格 的 下一格 = 空白格
  22.             Row1 = [C65536].End(xlUp).Row + 1
  23.             
  24.             '欄C空白格 的值 = Rng 的左一格 的值
  25.             Cells(Row1, 3) = Rng
  26.         End If
  27.     Next
  28. End Sub

  29. '直接勾選要複製的項目
  30. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  31.     Dim Rng, rngA As Range, endRow As Integer
  32.    
  33.     endRow = [A65536].End(xlUp).Row
  34.     Set rngA = [A1].Resize(endRow, 1)
  35.    
  36.     'Intersect(Target, rngA) 可將 SelectionChange
  37.     '所觸動的有效範圍限制在 rngA 中,
  38.     If Not Intersect(Target, rngA) Is Nothing Then
  39.         If Target.Font.ColorIndex = 1 Then
  40.             Target.Font.ColorIndex = 5
  41.         Else
  42.             Target.Font.ColorIndex = 1
  43.         End If
  44.     End If
  45. End Sub
複製代碼

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題