2016-12-17 3 views
0

Я пытаюсь выбрать/отменить выбор всех флажков с именем «печать» в электронной таблице, если установлен флажок «print1».vba выбрать/снять все флажки с именем x в таблице?

Я создаю свои флажки, используя следующий код как часть как для каждого цикла.

For Each objFile In objFolder.Files 


If DatePart("ww", objFile.DateCreated, vbMonday, vbFirstFourDays) = Range("H7").Value Then 


'print file PG 
    Cells(i + 13, 1) = Range("T7").Value 
    'print file Month 
    Cells(i + 13, 5) = Range("H7").Value 

    'print file Year 
    Cells(i + 13, 9) = Range("B7").Value 

    'print file name 
    Cells(i + 13, 13) = objFile.Name 

    'print file path 
    Cells(i + 13, 18) = "=hyperlink(""" & objFile.Path & """)" 

    'add action box 1 
    ActiveSheet.CheckBoxes.Add(Cells(i + 13, 27).Left, Cells(i + 13, 27).Top, Cells(i + 13, 27).Width, Cells(i + 13, 27).Height).Select 

    With Selection 
    .Name = "print" 
     .Caption = "" 
     .Value = xlOff ' 
     .LinkedCell = Cells(i + 13, 27) 
     .Display3DShading = False 
      End With 

Это создает как можно больше флажков с именем «печать».

У меня также есть уникальный флажок «print1». Этот флажок имеет макрос, назначенный ему, называемый set_print. Макрос должен запускаться, когда пользователь проверяет/отменяет этот флажок и должен проверить/снять отметку со всех моих других флажков с именем «печать». Для этого я использую следующий код:

Sub set_print() 
If ActiveSheet.CheckBoxes("print").Value <> xlOn Then 
ActiveSheet.CheckBoxes.Value = xlOn 
ActiveSheet.Shapes("Search1").TextFrame.Characters.Text = "Print" 
Else 
ActiveSheet.CheckBoxes("print").Value = xlOff 
ActiveSheet.Shapes("Search1").TextFrame.Characters.Text = "Search" 
End If 
End Sub 

По какой-либо причине отмечен только один из моих флажков. Я не уверен, что я делаю неправильно, пожалуйста, кто-нибудь может показать мне?

ответ

0

в изменении в for each петли:

With Selection 
    .Name = "print" 

к:

With Selection 
    .Name = "print" & i 

затем изменить Sub set_print() следующим образом:

Sub set_print() 
    With ActiveSheet 
     If .CheckBoxes("print1").Value <> xlOn Then 
      CheckThem xlOn 
      .Shapes("Search1").TextFrame.Characters.Text = "Print" 
     Else 
      CheckThem xlOff 
      .Shapes("Search1").TextFrame.Characters.Text = "Search" 
     End If 
    End With 
End Sub 

Sub CheckThem(xlOnOff As Long) 
    Dim chkBx As CheckBox 

    With ActiveSheet 
     For Each chkBx In .CheckBoxes 
      If Left(chkBx.Name, 5) = "print" Then chkBx.Value = xlOnOff 
     Next 
    End With 
End Sub 
+0

, что не работает, это просто проверяет все галочки. Я хочу только проверить эти флажки с именем 'print' –

Смежные вопросы