Board logo

標題: [發問] 怎麼使用核取方塊及按鈕 [打印本頁]

作者: kidnaruto0    時間: 2010-11-23 14:50     標題: 怎麼使用核取方塊及按鈕

本帖最後由 kidnaruto0 於 2010-11-23 15:04 編輯

我想利用核取方塊
當我勾選某幾個核取方塊之後按確定按鈕
會將有被勾選的核取方塊所對應的儲存格內容
印到另一工作表的某依指定儲存格
且按照順序往下排序
例如:
1.勾選某幾個之後按確定
[attach]3720[/attach]
2.會將和取方塊所對應知儲存格內容
複製至另一工作表中的儲存格
並按照順序往下排
[attach]3721[/attach]
請問這樣我要怎麼去編寫我的VBA
作者: oobird    時間: 2010-11-23 16:36

例如:
  1. Sub test()
  2.     Dim p As Shape
  3.     For Each p In Sheet1.Shapes
  4.     If p.Name Like "Check*" And p.OLEFormat.Object.Value = 1 Then
  5.   p.TopLeftCell.Offset(, 1).Copy Sheet2.[a65536].End(3)(2, 1)
  6.     End If
  7.     Next
  8. End Sub
複製代碼

作者: GBKEE    時間: 2010-11-23 16:48

回復 1# kidnaruto0
確定按鈕的程式碼
  1. Private Sub CommandButton1_Click()
  2.     Dim E As Shape, Rng As Range
  3.     With Sheet4
  4.         Set Rng = .Range("b2")
  5.         .Range(Rng, Rng.End(xlDown)) = ""
  6.     End With
  7.     For Each E In Sheet3.Shapes
  8.         If E.Type = msoFormControl And E.Name Like "Check Box*" Then
  9.             If E.OLEFormat.Object.Value = 1 Then
  10.                 Rng.Value = E.TopLeftCell.Offset(, 1)
  11.                 Set Rng = Rng.Offset(1)
  12.             End If
  13.         End If
  14.     Next
  15. End Sub
複製代碼

作者: kidnaruto0    時間: 2010-11-24 10:06

謝謝兩位大大的指導
可是
我還是不會用耶
作者: GBKEE    時間: 2010-11-24 16:47

本帖最後由 GBKEE 於 2010-11-24 17:03 編輯

回復 4# kidnaruto0
按鈕 分 表單按鈕 及 控制工具箱 按鈕
使用 表單按鈕方式 如圖一至圖四,請將程式碼複製到圖四內
[attach]3740[/attach]

[attach]3737[/attach]



[attach]3738[/attach]




[attach]3739[/attach]




使用 控制工具箱 按鈕 如下圖五-六  請將程式碼複製到圖六內
[attach]3741[/attach]






[attach]3742[/attach]
作者: emma    時間: 2012-10-26 18:14

請問已新增Sheet1所核取的資料至Sheet2後,設另一個按鈕要將Sheet1工作表中的核取方塊中已核取的勾全部取消並將Sheet2也清空的話,應該要如何設定呢??

還有如果所核取的欄位不只一欄的值,有數個欄位,如何將多個欄位一併複制到Sheet2裡?

[attach]12902[/attach]
作者: GBKEE    時間: 2012-10-26 21:29

回復 6# emma
試試看
  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.Resize(, 2) = E.TopLeftCell.Offset(, 1).Resize(, 2).Value
  9.                 Set Rng = Rng.Offset(1)
  10.             End If
  11.         End If
  12.     Next
  13. End Sub
  14. Sub 清除_Click()
  15.     Sheet2.UsedRange.Offset(1).Clear
  16.     For Each E In Sheet1.Shapes
  17.         If E.Type = msoFormControl And E.Name Like "Check Box*" Then
  18.              E.OLEFormat.Object.Value = False
  19.         End If
  20.     Next
  21. End Sub
複製代碼

作者: emma    時間: 2012-10-29 12:02

本帖最後由 emma 於 2012-10-29 12:04 編輯

謝謝GBKEE版主的回覆
另外想要再請教一下,如果說帶入Sheet2欄位是不連續的欄位的話,該如何修改程式呢?

例如選擇
[attach]12928[/attach]

帶入名稱、數量、總金額(如果要有千分位的樣式是只要在儲存格的格式中設定就好,還是要在公式中做設定呢?)、負責業務
[attach]12929[/attach]

[attach]12930[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)