2016-03-28 5 views
0

このコードは別の投稿にあり、修正しようとしましたがバグがありました。目標は、特定のシート、キャプション、値、および色からすべてのチェックボックスとオプションボタンをリストすることです。 (.caption、.value、.backcolorは実行時エラー438を引き起こします。また、同じブックの一部であるワークシート上にリストしたいと思います。このコードとは別のファイルではありません。シート上のすべてのオブジェクトをリストする方法、キャプションと値

Sub ListAllObjects() 
Dim ws As Worksheet 
Dim objFSO As Object 
Dim objFil As Object 
Dim Sh As Shape 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.CreateTextFile("C:\temp\summary.csv") 

objFile.writeline "Sheet, Object Type, Object name, Object Caption, Object Value, Object Color" 

For Each ws In ActiveWorkbook.Sheets 'keeing this in case I want it later 

If ws.Name = "Hotel Check Sheet" Then 

For Each Sh In ws.Shapes 
    If InStr(Sh.Name, "checkbox") > 0 Or InStr(Sh.Name, "optionbutton") > 0 Then 
    objFile.writeline ws.Name & "," & TypeName(Sh) & "," & Sh.Name & "," & Sh.Caption & "," & Sh.Value & "," & Sh.Color 
    End If 
Next 

End If 
Next 

objFile.Close 

End Sub 

答えて

0

あなたは、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」取得の理由は、エラーがShapeCaptionValue、またはColor性質を持っていないため、単純である。これは、基本的には制御用コンテナだけですあなたは.OLEFormat.Objectにあります:

With Sh.OLEFormat.Object 
    objFile.WriteLine ws.Name & "," & _ 
         TypeName(Sh.OLEFormat.Object) & "," & _ 
         .Name & "," & _ 
         .Caption & "," & _ 
         .Value & "," & _ 
         .Interior.Color 
End With 

OptionButtonまたはCheckBoxのどちらにも.Colorプロパティがありません。 .Interior.Colorを確認する必要があります。

+0

ありがとう、@ Comintern。あなたは文脈でそれを使う方法を私に教えてくれませんか?私は "InStr(Sh.Name、"チェックボックス ")> 0またはInStr(Sh.Name、" optionbutton ")> 0の後に置いてみました。また、新しいファイルの代わりに既存のブックのシートに書き込む方法についての洞察はありますか? –

+0

@JoePatrick - 'If'文を' TypeName(Sh.OLEFormat.Object)= "CheckBox"またはTypeName(Sh.OLEFormat.Object)= "OptionButton" Thenに変更しようとすると、 – Comintern

関連する問題