No.3ベストアンサー
- 回答日時:
デバッグ作業の際には、Forの内部で。
。。等々の、不要な(正常に動作している)個所をそぎ落としていって、最終的にエラー発生の最終的なポイントを特定する事が肝要です。たとえば、ループの内外関係なく以下の一文だけでも同様のエラーが発生します。
Label1.ForeColor = RGB(0, 0, 0)
そこで、RGB関数をヘルプで引くと、Integerを返す関数です。
そのうえで、エラーメッセージと突合せると、ForeColorはsystem.drawing.color型なので、Integer型を設定できないという意味だと読み取れます。
※「値をsystem.drawing.colorに変換できません」=自動変換できない型の値を代入しようとしています、程度に意訳できます。
それではRGB関数同様に色を指定して、system.drawing.color型の値を作成するにはと言うと
system.drawing.colorをヘルプで引くと、FromArgbというメソッドが見つかります。
という事で、以下のように書きなおせばOK
Label1.ForeColor = RGB(i, i, i)
↓
Label1.ForeColor = Color.FromArgb(i, i, i)
デバッグに必要な切り分け方、ヘルプの情報の当たりの付け方を書いてみました。
ちなみに、#2で書いたように意味のあるコードにする為にはというのを、VB2010で書くと以下の通り
Dim i As Integer
Dim j As Integer
For i = 255 To 0 Step -2
Label1.ForeColor = Color.FromArgb(i, i, i)
'フォームを再描画してラベルの色変えを画面上に反映させる
Me.Refresh()
'徐々に色が変わっていく様子を見せる為に、待機処理をする
'待機時間はループ回数で調整する
For j = 0 To 1000
Application.DoEvents()
Next
Next
回答ありがとうございます。
なんとか徐々に色を変えることができました!!
問題解決の仕方等、教えてくださってありがとうございました。
No.2
- 回答日時:
コードを見る限り、VB6以前のソースのようですので、そのように解釈してコメントします。
#1の方が書いているように、最終的にはiの値は-1になりますが、stepの値がマイナスで、終了条件が0なのでRGB(-1, -1, -1)は実行されないはず。
実際に、VB6でこのコードを動かしましたがエラーは発生しませんでした。
どちらかと言えば、Label1って名前のコントロールが存在しないなど、別の理由でエラー発生ではないかなという気がします。
とりあえず、何が原因でエラー発生しているのかを調べないことには何も言えません。
たとえば、以下のようなコードに書き直して調査します。
一度、tmpColorに値を格納してから設定するなどの冗長なコードは、エラーの発生個所を明確にする為です。
dim i As Long
dim tmpColor As Long
'事前にForeColorを設定する
Label1.ForeColor = &HFFFFFF
MsgBox "ループ開始"
For i = 255 To 0 Step -2
'イミディエイトウィンドウにiの値を表示する
Debug.Print i
tmpColor = RGB(i, i, i)
Label1.ForeColor = tmpColor
Next
MsgBox "ループ終了"
ちなみに、エラーが出なくなったとしてもこのコードは無意味です。
あくまでForを使用するのであれば、以下のような感じです。
For i = 255 To 0 Step -2
Label1.ForeColor = RGB(i, i, i)
'フォームを再描画してラベルの色変えを画面上に反映させる
Form1.Refresh
'徐々に色が変わっていく様子を見せる為に、待機処理をする(待機時間はDoEventsの個数で調整)
DoEvents
DoEvents
~~~DoEvents を10000行ぐらい書く ~~~
DoEvents
Next
実際には、タイマーを使って徐々に色が変わるように作成するべきですが。
すいません。
VBのバージョンを書いてませんでしたね。。
今使ってるのはVB2010Betaです。
VB6でやって下さってありがとうございます。
一応、タイマーでやってます!
No.1
- 回答日時:
エラーが出たとき、iの値が-1なんじゃない?
> For i = 255 To 0 Step -2
-2の差分なので、3,1,-1とループの最終回は-1で実行。
最終回を0でなく1まででやめるか
(For i = 255 To 1 Step -2 ね)
if文で判断するか。
For i = 255 To 0 Step -2
if i < 0 then
Label1.ForeColor = RGB(0,0,0)
else
Label1.ForeColor = RGB(i,i,i)
end if
Next
かな。
エラーの内容を書いてませんでしたね。。
すいません。。
エラーの内容は、
iの値をsystem.drawing.colorに変換できません。
っていうエラーです。
どうにかして変換とかできないんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- 高校 図書館や学習プラザでは消しゴム禁止にしませんか? 5 2023/05/08 18:36
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
なぜこんな初歩的なVBAのIf文で...
-
ACCESSのエラーで困っています
-
VBAがブレークモードになっ...
-
Application.ActiveInspectorで...
-
職場から目的地までの距離集計
-
VBS実行時エラー オブジェクト...
-
DataGridView からの値取得に関...
-
Excel2019 ワークシートのコピ...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
ASP.NET OleDbConnectionが定義...
-
Access マクロでのテーブル削除
-
一般ODBCエラーについて
-
日本語環境下で作成したマクロ...
-
【Excel VBA】マクロをボタンに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
VBAでのエラー
-
マクロについて教えてください...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
VBS実行時エラー オブジェクト...
-
EXCEL VBAマクロ中断でデバッグ...
-
Outlook.ApplicationをCreateOb...
-
VBSで変数の宣言はできないので...
-
VBAのコードがエラーになっ...
-
実行時エラー -'-2147417848
-
ADODB.Streamを使用してUTF-8を...
-
EXCEL/VBAで、自分のPCだけエラ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
VB6+SQL サーバー 2000 で 実行...
おすすめ情報