• ベストアンサー

ラベルの文字色変更

bin-chanの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答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 かな。

qwerjpo
質問者

お礼

エラーの内容を書いてませんでしたね。。 すいません。。 エラーの内容は、 iの値をsystem.drawing.colorに変換できません。 っていうエラーです。 どうにかして変換とかできないんでしょうか?

関連するQ&A

  • ラベル内容変更の簡略化がしたい。

     いつもお世話になっております。  エクセル97のVBAで、ユーザーフォーム上に配置されたラベルの内容を書き換えて、ユーザーフォームに表示される文字列を変更するのは、 Label1 = 文字列  と、するだけで良いことは気づいていましたが、今度は大量のラベルの内容を一気に変えたくなり、For文系の命令で添え数字を変化させたい、と思ったのですが、上手くいきません。  ここはどういう風に記述すべきなのでしょうか?  以下の例のようなイメージで、2行目の記述はどうすべきでしょうか? ====================================================================== 例)Label1からLabel100までの内容を、一括変更するマクロ For i = 1 to 100 Label & i = "使用中" Next ======================================================================  よろしくお願いします。

  • エクセルVBAラベルの変数?

    エクセル2000VBAにて下記のように作成しました。 With ActiveSheet For i = 4 To 200 If Label1.Caption = .Cells(i, 1) Then For h = 4 To 34 If Label25.Caption = .Cells(2, h) Then For idx = i To 200 If .Cells(idx, 3) = Label21.Caption Then Label6.Caption = .Cells(idx, h) Label7.Caption = .Cells(idx + 2, h) GoTo ラベル2 End If Next idx End If Next h End If Next i ラベル2: For i = 4 To 200 If Label2.Caption = .Cells(i, 1) Then For h = 4 To 34 If Label25.Caption = .Cells(2, h) Then For idx = i To 200 If .Cells(idx, 3) = Label21.Caption Then Label8.Caption = .Cells(idx, h) Label9.Caption = .Cells(idx + 2, h) GoTo ラベル3 End If Next idx End If Next h End If Next i ラベル3: ・・・ End With Label1~5まで同じ処理を行うため 1~5まで変数を使用して簡単にしたいのですが Label(変数)の書き込み方がわかりません? 検索を使用しましたが検索項目が悪いのか なかなか解決しません。 何方か教えていただけないでしょうか?

  • VB2010でラベルに文字を結合したい

    VB2010でTextboxで辺の長さの数値を入力し、その数値分「*」を表示して正方形を作るアルゴリズムを考えています。どんな感じかは添付画像を参照していただければと思います。 Dim saizu As Integer Dim i, j As Integer saizu = TextBox1.Text For i = 1 To saizu For j = 1 To saizu Label1.Text = "*" Next Label1.Text = vbLf Next 考え方はこんな感じだと思うのですが、このままだとLabel1の中身が毎回更新されてしまい、結局何も表示されないという結果になることに気づきました。 確かVBにはLabelの手前に何か連結演算子のようなものをつけることで、更新されるのではなく追加していくというふうにできたと思うのです(記憶違いならこの質問自体が意味のないことになってしまうのですが…)。検索エンジンでいろいろと検索しては見たのですが、検索ワードがどれも曖昧な所為か私が必要としている答えにたどり着くことができませんでした。 曖昧な質問で申し訳ないのですが、Labelなどで文字を更新するのではなく結合する連結演算子のようなものを回答していただけたらありがたいです。もし、そんなものはないよ、という場合も教えていただければと思います。よろしくおねがいします。

  • VBA:ユーザフォームのラベルの指定の仕方教えてください。

     今、ユーザフォームに20個のラベルがあります。それぞれのラベルは、条件によりラベルの表示内容が変更します。そこで、ラベルの表示変更が必要なときにすぐに変更できるようにしたいと考えています。しかし、例えば以下のようなコードを作成するとエラーになり困っています。  Label(i)で、iの番号によりラベルが呼び出されないだろうかと自分なりに作りましたがダメでした。以下のようなループ文中で特定のラベルを呼び出し処理することは不可能でしょうか?  やはり、UserForm1.Label3などのように番号をきちんと書かないとダメでしょうか?本当は、ラベルが82個ありその一つ一つにコードを割り当てるのが大変です。また、きれいなコードで書きたいと思うからです。宜しければ、ご教授願います。 -------------------------------------------- Sub セルの値をラベル表示する() For i = 1 To 20 With UserForm1.Label(i) .Caption = Cells(1, i) End With Next i End Sub

  • ボタンを押すとラベルの文字をかえるには

    VB2008エクスプレスを使っています 初歩的な質問なんですが フォームにボタンとラベルを貼って ボタンを押すとラベルの文字が変わるように設定したいです buttun1クラスで clickメドットで Label1.Text = Label.text("") で("")内に文字を入力したんですが エラーになってしまします

  • Visual Basic6.0を使用しています。

    Visual Basic6.0を使用しています。 質問なのですが、テキストラベル100個で、10*10の表を作りました。 その100個のラベルの一つ一つに3ケタ乱数を入れたいと思って、For文を使用したのですが、 エラーが出てしまいます。 For k = 5 To 104 Label(k).Caption = Int((999 - 100 + 1) * Rnd + 100) Next k ⇒このように作ったのですが、Label(k)のところをどのようにしたらいいかわからなくて困ってます。 文がわかりにくくて申し訳ないのですが、どなたかわかる方いらっしゃいましたらよろしくお願いします! LabelをFor文で回すこと自体できないのでしょうか? ちなみにFor文で回さずに一つ一つの表に乱数を入れるのは成功します。

  • 配列化

    VB2005においてlabel,textboxといったコントロールを配列化したいのですがどうすればいいでしょうか? VB6では下記のコードが成り立ちますが・・・ For i=0 to 3 label(i).caption = str(i) Next このようにコントロール自体を配列化することは出来るのでしょうか?

  • Q:Ecvel 2007 VBA: 長い処理の間のメッセージ?

    いつもお世話になります。 ユーザーフォームの下にラベルを置いて、ステータスバー的に使っています。 ちょっと時間が掛かる処理があることが分かったので、その間は「処理中・・・」的なメッセージを出すことにしました。 現在は以下のようなプログラムにしています。 Option Explicit Private Sub CommandButton1_Click() setColor1 '<==Break? setcolor2 Dim i As Long For i = 2 To 10000 Cells(i, 5).Value = "wanwan" Next i setcolor3 End Sub Sub setColor1() With UserForm1.Label1 .Caption = "you push the button..." .ForeColor = RGB(0, 255, 0) End With End Sub Sub setcolor2() With UserForm1.Label1 .Caption = "wait for a while..." .ForeColor = RGB(255, 0, 0) End With End Sub Sub setcolor3() With UserForm1.Label1 .Caption = "Finished" .ForeColor = RGB(0, 0, 0) End With End Sub これを実行しても、Forループの間はLabel1のCaptionはフォームデザイン時のデフォルト値Beforeになったままで、Forループが終わるとsetcolor3によってセットされるFinishedになります。 setcolor1、setcolor2が表示する途中経過は見えません。 しかし、上のリストの Break? と書いているところにブレークポイントを置いて、ブレークしたらF8を連打してsetcolor1、setcolor2を手動実行するとメッセージは狙い通りに変わります。 Forループの中でワークシートに何らかの操作を行っている場合にのみ起こる現象で、Forループの中でwait文を書いて10秒待つとかやると、メッセージは狙い通りに変わります。 ワークシートを処理しながら、メッセージを狙い通りに変える方法はあるでしょうか。 何かわかりましたらよろしくお願いします。 なお、ユーザーフォームの画像を添えます。

  • ACCESS VBA のFor文のStepについて

    ACCESS VBAでFor文を使った構文を作っているのですが、Stepについて+、-は使えたのですが、乗算、割り算は使えないのでしょうか? For i = 10 to 10000 step *10 ~処理 Next i にすると"*"でコンパイルエラーが出ます。 10、100、1000、10000の処理がしたいのです。 Forでは無理なのでしょうか?

  • vb6で覚えたことがvb2010で活かせれない。。

    グラフの目盛表示をしたくて、 vb2010で下記のコードを入力したのですが、何回やってもエラーがでます。 どなたか教えてください。 --------------------------------- J = 0 For I = 0 To 200 Step 40 CurrentX = 120 CurrentY = 100 + I strB = CStr(0.2 - (2 / 5) * J * 0.1) Print strB J = J + 1 Next J = 0 For I = 0 To 200 Step 40 CurrentX = 120 CurrentY = 300 + I strB = CStr(0 - (2 / 5) * J * 0.1) Print strB J = J + 1 Next -------------------------------------