2011-05-23 138 views
2

我有一個包含許多複選框的工作表。 Excel將它們自動命名爲CheckBox1,CheckBox2等...但是,對於我的文檔,我需要將它們全部重命名爲Rij11_1,Rij11_2等(Rij11是第11行,_1是該行中的第一個複選框,依此類推) 。 對於每一行,重命名始於_1。Excel vba重命名複選框

#1會員Osknows和Dave DuPlantis幫我已經就這一個(感謝您的幫助迄今爲止很多),有了這個代碼:

Sub test() 
    Dim obj As OLEObject, ChkBoxRow as long 
    ChkBoxRow = 11 
    With Worksteets("Storia") 
    For Each obj In .OLEObjects  
    If TypeName(obj.Object) = "CheckBox" Then   
     if obj.TopLeftCell.Row = ChkBoxRow then    
      obj.Name = "Rij11_" & Right(obj.Name, 1)   
     end if  
    End If 
    Next obj 
    End With 
End Sub 

然而,每行第一個改名複選框不從1開始(通常爲7,出於某種原因逃脫了我),並且如果連續超過10個複選框,則編號不會超過10.在_9之後,我得到_0而不是_10,然後在_0,它再次以_1繼續,從而導致行中的名稱重複。

有沒有人能幫我解決這個重新編號問題?

非常感謝!

親切的問候, 馬克

回答

0

的問題是在內部。如果語句Right(obj.Name, 1)。重命名只會將舊對象名稱的最右側字符粘貼到新名稱的末尾。嘗試用以下代替它:

Right(obj.Name, Len(obj.Name) - 8) 

其中8是「複選框」的長度。

1

這裏有一個簡單的方法來擺脫這些。突出顯示要刪除複選框和關聯文本的列或單元格。然後使用CTRL + C剪切它們,然後移動到另一張紙上,粘貼它們。 (這種方法是,如果你想刪除一列複選框,但保留另一列,或刪除隨機複選框)。現在點擊F5,然後選擇特殊,然後點擊對象(在粘貼刪除的表格上),它們全部被選中,現在只需剪切它們,完成! :)