返回列表 上一主題 發帖

[發問] 如何刪除控制項

[發問] 如何刪除控制項

請問若我是以OLEObjects.Add方法增加多個不同群組的選項按鈕,如果我要刪除其中某一個群組,該用什麼方法呢??
寶寶

選項按鈕是以vba程式的方式加入,右邊的按鈕是以[開發人員]/[插入]/[active X 按制項]的方式加入,
若我有5組選項按鈕,要刪除GroupName=4,程式碼如下:

Private Sub CommandButton5_Click()
   ActiveSheet.Shapes.Item(4).Delete
End Sub

當我執行時,結果便會將右邊的按鈕刪除,是為什麼呢?

123.JPG (67.74 KB)

123.JPG

寶寶

TOP

感謝各位大大的回覆喔
寶寶

TOP

本帖最後由 caichen3 於 2012-3-27 17:38 編輯

請問各位大大
我有5項需求陳述(圖1),當我按下右邊"刪除"按鈕,刪除第4項需求陳述,圖畫呈現如圖2,若希望將圖2下面選項按鈕依序往上排列該如何呢??
以下是我的程式碼:
rivate Sub CommandButton5_Click()
gyou = Selection.Row
ActiveSheet.Rows(gyou).ClearContents
Range("I1").Value = Range("I1").Value - 1
TMMPA = Range("I1").Value
aaa = Chr(65)
ccc = Chr(67)
Dim yyy As String
Dim XXX As String
Dim k As Integer
Dim ob As Object

For I = 2 To 100
XXX = I
Range(aaa + XXX).Value = ("")
Range(ccc + XXX).Value = ("")
Next
ActiveSheet.Range("A2:H200").Borders.LineStyle = XILinestyleNone
ActiveSheet.Range("A2:H200").Interior.ColorIndex = xlColorIndexNone

For R = 1 To TMMPA
yyy = R + 1
Range(aaa + yyy).Value = R
Range(ccc + yyy).Value = R
Next
ActiveSheet.Range("A2:H" + yyy).Borders.LineStyle = xlContinuous
ActiveSheet.Range("A2:H" + yyy).Borders(xlEdgeBottom).Weight = xlThick
ActiveSheet.Range("A2:H" + yyy).Borders(xlEdgeRight).Weight = xlThick
ActiveSheet.Range("A2:H" + yyy).Borders(xlEdgeLeft).Weight = xlThick
ActiveSheet.Range("A2:A" + yyy).Interior.ColorIndex = 15

k = gyou - 1
For Each ob In ActiveSheet.OLEObjects
  If ob.Name Like "OptionButton*" Then
    If ob.Object.GroupName = k Then ob.Delete
  End If
Next

End Sub

1.JPG (60.73 KB)

1.JPG

2.JPG (54.29 KB)

2.JPG

寶寶

TOP

嗯~我後來將每個選項按鈕的GroupName都改為數字
寶寶

TOP

這是我的檔案,請大大幫我看一下,感謝:)
寶寶

TOP

本帖最後由 caichen3 於 2012-3-28 12:31 編輯

嗯,我要刪除的是當時選取儲存格的那列(gyou)
為什麼我選取編號4按下刪除會同時將編號4、5一起刪除呢?
只要是選取倒數第二列刪除,就會將最後二列的編號、需求陳述刪除,但還是會剩最後一列的選項按鈕
寶寶

TOP

本帖最後由 caichen3 於 2012-3-28 22:04 編輯

請問大大:
用 Ex 的程式調整後再執行你的Private Sub CommandButton5_Click()   EX( )這段程式會該放在哪裡呢?是Private Sub CommandButton5_Click()裡面一開始的地方嗎?

接下來在Private Sub CommandButton5_Click()程式最後面的地方在執行一次EX( ) 這段程式嗎??

我嘗試放在CommandButton5_Click()程式碼前與後面,還是無法可以幫我看一下嗎,感謝:)
Private Sub CommandButton5_Click()
Dim yyy As String
Dim xxx As String
Dim k As Integer
Dim ob As OLEObject
gyou = Selection.Row
ActiveSheet.Rows(gyou).ClearContents
Range("I1").Value = Range("I1").Value - 1
TMMPA = Range("I1").Value
aaa = Chr(65)
ccc = Chr(67)

For I = 2 To 100
xxx = I
Range(aaa + xxx).Value = ("")
Range(ccc + xxx).Value = ("")
Next
ActiveSheet.Range("A2:H200").Borders.LineStyle = XILinestyleNone
ActiveSheet.Range("A2:H200").Interior.ColorIndex = xlColorIndexNone

For R = 1 To TMMPA
yyy = R + 1
Range(aaa + yyy).Value = R
Range(ccc + yyy).Value = R
Next
ActiveSheet.Range("A2:H" + yyy).Borders.LineStyle = xlContinuous
ActiveSheet.Range("A2:H" + yyy).Borders(xlEdgeBottom).Weight = xlThick
ActiveSheet.Range("A2:H" + yyy).Borders(xlEdgeRight).Weight = xlThick
ActiveSheet.Range("A2:H" + yyy).Borders(xlEdgeLeft).Weight = xlThick
ActiveSheet.Range("A2:A" + yyy).Interior.ColorIndex = 15

k = gyou - 1
For Each ob In ActiveSheet.OLEObjects
If ob.Name Like "OptionButton*" Then
    If ob.Object.GroupName = k Then ob.Delete
  End If
Next
Cells(gyou, 1).Resize(, 8).Delete xlShiftUp

For Each ob In ActiveSheet.OLEObjects
    If ob.Name Like "OptionButton*" Then
    ob.Object.GroupName = ob.TopLeftCell.Row
    End If
Next

End Sub
寶寶

TOP

本帖最後由 caichen3 於 2012-3-29 12:12 編輯

感謝大大的回覆:victory:
gyou = Selection.Row    ' gyou表示所在列
If ob.TopLeftCell.Row = gyou Then ob.Delete   ' 這行程式是說明若ob左上儲存格的行值等於gyou即刪除嗎??
topLeftCell.Row 是左上單元格的行值,該如何辦識topleftcell.row的所在位置呢??
寶寶

TOP

若我Selection.Row在第3列,請問topleftcell.row在哪個位置呢??

123.JPG (7.97 KB)

123.JPG

寶寶

TOP

        靜思自在 : 犯錯出懺悔心,才能清淨無煩惱。
返回列表 上一主題