返回列表 上一主題 發帖

[發問] 核取方塊回存 (不連續)

[發問] 核取方塊回存 (不連續)

各位大師們好
                        上次看了GBKEE版主的回覆深感佩服,如附件!想在請教一下如果說帶入Sheet2欄位是不連續的欄位的話,該如何修改程式呢? KAI~15.rar (11.42 KB)

兩者皆可
  1. Sub 確定_Click()
  2.     Dim E As Shape, Rng As Range
  3.     Sheet2.UsedRange.Offset(1).Clear
  4.     Set Rng = Sheet2.UsedRange.Cells(2, 1)
  5.     For Each E In Sheet1.Shapes
  6.         If E.Type = msoFormControl And E.Name Like "Check Box*" Then
  7.             If E.OLEFormat.Object.Value = 1 Then
  8.                 Rng.Offset(, 0) = E.TopLeftCell.Offset(, 1).Value
  9.                 Rng.Offset(, 1) = E.TopLeftCell.Offset(, 2).Value
  10.                 Rng.Offset(, 2) = E.TopLeftCell.Offset(, 5).Value
  11.                 Rng.Offset(, 3) = E.TopLeftCell.Offset(, 7).Value
  12.                 Set Rng = Rng.Offset(1)
  13.             End If
  14.         End If
  15.     Next
  16. End Sub
複製代碼
  1. Sub 確定_Click()
  2.     Dim E As Shape, Rng As Range
  3.     Sheet2.UsedRange.Offset(1).Clear
  4.     Set Rng = Sheet2.UsedRange.Cells(2, 1)
  5.     For Each E In Sheet1.Shapes
  6.         If E.Type = msoFormControl And E.Name Like "Check Box*" Then
  7.             If E.OLEFormat.Object.Value = 1 Then
  8.                 With E.TopLeftCell
  9.                     Rng.Resize(, 4) = Array(.Offset(, 1).Value, .Offset(, 2).Value, .Offset(, 5).Value, .Offset(, 7).Value)
  10.                 End With
  11.                 Set Rng = Rng.Offset(1)
  12.             End If
  13.         End If
  14.     Next
  15. End Sub
複製代碼
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

首先感謝kimbal版主的答覆
                         這正是我想要知道的答覆!但我想請問一下諸位大師們如果說將核取方塊改為正常的 TRUE or FALSE 來決定 Sheet2 是否顯示不知這樣是否可行,或許有點多此一舉,懇請各位賜教如附件: kai~16.rar (14.67 KB)

TOP

回復 1# kai6929


    謝謝你幫我問到我也想知道的答案,但是請問這附件不是我所提供的原始附件嗎?

TOP

是阿 ! 但看妳PO的文沉到谷底,特地幫妳一問,自己也可一同學習

TOP

回復 3# kai6929

這個樣子?
          If E.OLEFormat.Object.Value = True Then
  1.     Sub 確定_Click()
  2.     Dim E As Shape, Rng As Range
  3.     Sheet2.UsedRange.Offset(1).Clear
  4.     Set Rng = Sheet2.UsedRange.Cells(2, 1)
  5.     For Each E In Sheet1.Shapes
  6.         If E.Type = msoFormControl And E.Name Like "Check Box*" Then
  7.             If E.OLEFormat.Object.Value = True Then
  8.                 Rng.Offset(, 0) = E.TopLeftCell.Offset(, 1).Value
  9.                 Rng.Offset(, 1) = E.TopLeftCell.Offset(, 2).Value
  10.                 Rng.Offset(, 2) = E.TopLeftCell.Offset(, 5).Value
  11.                 Rng.Offset(, 3) = E.TopLeftCell.Offset(, 7).Value
  12.                 Set Rng = Rng.Offset(1)
  13.             End If
  14.         End If
  15.     Next
  16. End Sub
複製代碼
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

感謝協助,
  但執行後還是不行,能否在幫忙看看 KAI~17.rar (14.68 KB)

TOP

回復 7# kai6929
AutoFilter 自動篩選 A欄 ="True"
複製C,D,G,I的值 到Sheet2.Range("a1")
  1. Sub 確定_Click()
  2.     Sheet1.Range("a1").AutoFilter 1, "True"
  3.     Sheet1.Range("c:d,g:g,i:i").Copy
  4.     Sheet2.Range("a1").PasteSpecial xlPasteValues
  5.     Sheet1.Range("a1").AutoFilter 1
  6. End Sub
複製代碼

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題