2017-07-07 5 views
-1

なぜこのコードは機能しません。誰でも簡単なコードを助けることができますか?アプリケーション機能の問題とコードの比較

Private sub cmbStart_click() 
Dim bro as application 
Dim bre as integer 
Dim bru as control 

For bre = 1 to 42 
Set bru = controls("cmb" & bre).caption 
Set bro = application.worksheetfunction.vlookup(bre, sheets("keg").range("c2:f300"),4,0) 
    If bro = "es" then 
    Controls("cmb" & bre).backcolor = rgb(255,0,0) 
    Else 
    Controls("cmb" & bre).backcolor = rgb(255,0,0) 
End if 
Next bre 
End sub 

答えて

1

Vlookup()のでApplicationが無意味であることをbroを宣言アプリケーションを返さない:私はこのようなコードを記述します。

単に

Dim bro As Variant 
'... 
bro = Application.Worksheetfunction.Vlookup(bre, sheets("keg").Range("c2:f300"),4,0) 

同様に、制御ことがbruを宣言する理由はありません。キャプションは単にStringです。したがって

Dim bru As String 
'... 
bru = controls("cmb" & bre).caption 

VBAはほとんどオブジェクトを使用して命令型言語です。あなたはすべてをオブジェクトにしようとしているようです。

私はコードをテストする立場にはいませんが、上記はVBAとして理にかなっています。

これで問題が解決しない場合は、について少し詳しく説明してください。コードが機能しません。それがうまくいかないと単に報告するだけではあまり役に立ちません。

+0

私はあなたの提案を試みました。次に、アプリケーションは "set bru = controls(" cmb "&bre).caption"行でブロックされます。私はこれについての解決策が必要です –

+0

@ YanLimaBenuaあなたは 'bru'と同様の問題がありました。文字列ではなくコントロールとして宣言する理由はありません。編集を参照してください。 –