2

多くのチェックボックスを含むワークシートがあります。Excelはこれらに自動的にCheckBox1、CheckBox2などの名前を付けます。ただし、私のドキュメントでは、すべての名前をRij11_1、Rij11_2などに変更する必要があります(Rij11は行11、_1はその行の最初のチェックボックスなど) 。各行の名前変更は_1から開始することが重要です。

StackoverflowのメンバーであるOsknowsとDaveDuPlantisは、このコードですでにこれについて私を助けてくれました(あなたのすべての助けに感謝します):

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を超えません。 、_10ではなく_0を取得し、_0の後、再び_1を続行すると、行に名前が重複します。

この番号の付け直しの問題について私を助けてくれる人はいますか?

どうもありがとう!

よろしく、マーク

4

2 に答える 2

1

これらを取り除く簡単な方法は次のとおりです。チェックボックスと関連するテキストを削除する1つまたは複数の列を強調表示します。次に、CTRL + Cを使用してそれらを切り取り、その後、別のシートに移動して貼り付けます。(この方法は、チェックボックスの1つの列を削除して別の列を保持するか、ランダムなチェックボックスを削除する場合です)。次に、F5、[特殊]、[オブジェクト](削除するオブジェクトを貼り付けたシート上)の順に押すと、すべてが選択され、切り取って完了です。:)

于 2011-09-23T16:03:33.673 に答える
0

問題はRight(obj.Name, 1)、内部のIfステートメントにあります。名前の変更は、古いオブジェクト名の右端の文字を新しい名前の末尾にのみ貼り付けます。次のように置き換えてみてください。

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

ここで、8は「CheckBox」の長さです。

于 2011-05-23T15:06:49.523 に答える