• ベストアンサー

256色で任意の色を作成する時、1~255の入力制限をする方法

siddhaarthaの回答

  • ベストアンサー
回答No.2

>入力直後にエラーが表示されてしまい ということは質問文に書いてあるコードはテキストボックスを ハンドルとするイベント内に既に書かれているんですね? 上記コードがどのイベントか分からないとなんともいえません。 でも、とりあえず問題を回避するには 4行目、「If RButMimi.Checked Then」の直前にでも IF TextBox1.text < 0 or TextBox1.text > 255 Then exit sub 'SubかFunctionか分からないけどとにかく処理を中断する end if としておいたらどうでしょう?

siriusu-1
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなってすみません。 アドバイスして頂いた事を参考にやっと動くようになりました。 本当にありがとうございます! 何とか思った通り、255以上の時にはエラーメッセージと255の数値 に変更される設定が使えるようになりました。 表示が255にならない所は次の課題ですが(^^; 本当にありがとうございました。助かりました。

関連するQ&A

  • VB 繰り返し(ループ)について教えてください

    私は最近プログラムを書く仕事に就いたのですがまったくの初心者でなかなか課題が先に進めずに困っています。もしわかる方いましたら是非教えていただけるとうれしいです。 今わからないのが、繰り返し(ループ)です。 何とか一桁目は完成しましたがこの先がどうやってもうまくいきません。左にTextBox、真ん中にCommand、左にLabelがあり左に整数を入れて真ん中を押すと左に漢数字で表示されるという形で5桁まで出来るようにしたいのです。 今出来ているものをとりあえずはりますので是非教えてください。 Option Explicit Private Sub Command1_Click() Dim a As Integer Dim b As String a = Val(Text1.Text) If a = 0 Then b = "0" ElseIf a = 1 Then b = "一" ElseIf a = 2 Then b = "二" ElseIf a = 3 Then b = "三" ElseIf a = 4 Then b = "四" ElseIf a = 5 Then b = "五" ElseIf a = 6 Then b = "六" ElseIf a = 7 Then b = "七" ElseIf a = 8 Then b = "八" Else b = "九" Label1.Caption = b End Sub

  • 文字列連結演算子を使った繰り返し(ループ)について

    Text1・Command1・Label1 と並んだBoxでText1に数字を入力しCommand1を押すと漢数字(一,二…)となるプログラムなのですが、一桁ずつ求めて行き最後に文字列連結演算子を使って求める場合はどのようにしたらよいのでしょうか? エラーが出るのでどこかが変なんだと思うのですが、何度みてもわからなくて。。。今途中の段階ですが当方がやったところまでを乗せておきますので。違うところや付け足すところなど指摘したり教えていただけたらと思っています。よろしくお願いします。 Private Sub Command2_Click() Dim a As Integer Dim b As String a = Val(Text1.Text) For x = 1 To 5 If a = 1 Then Label1.Caption = "一" ElseIf a = 2 Then Label1.Caption = "二" ElseIf a = 3 Then Label1.Caption = "三" ElseIf a = 4 Then Label1.Caption = "四" ElseIf a = 5 Then Label1.Caption = "五" ElseIf a = 6 Then Label1.Caption = "六" ElseIf a = 7 Then Label1.Caption = "七" ElseIf a = 8 Then Label1.Caption = "八" ElseIf a = 9 Then Label1.Caption = "九" Else Label1.Caption = "〇" sText1 = "1" & "2" & "3" & "4" & "5" & "6" & "7" & "8" & "9" sLabel1 = "一" & "二" & "三" & "四" & "五" & "六" & "七" & "八" & "九" End If End Sub

  • VBAで行列を作る方法

    次のようなプログラミングで1,0,-1の要素で作られる3×3行列を全通り調べています。 この場合3の9乗通り調べることができます。 これを4×4や5×5行列など数を大きくして調べたいのですが、このプログラムを配列を使うなどして 簡単にできる方法を教えてください。 よろしくおねがいします。 Sub test() Dim a As Integer '行 Dim b As Integer '列 Dim c As Integer, i As Integer, j As Integer, d As Integer, e As Integer Dim 内積 As Integer, step As Integer Dim f As Integer, g As Integer, h As Integer, l As Integer, m As Integer, n As Integer, k As Integer, x As Integer Dim sum As Integer, total As Integer Dim aa As Integer, aaa As Integer, aaaa As Integer, bb As Integer, bbb As Integer, bbbb As Integer a = 3 '行 b = 3 '列 c = 0 内積 = 0 con = 0 sum = 0 tatal = 0 aa = 0 aaa = 0 aaaa = 0 bb = 0 bbb = 0 bbbb = 0 x = 0 For n = 0 To 2 For m = 0 To 2 For l = 0 To 2 For k = 0 To 2 For h = 0 To 2 For g = 0 To 2 For f = 0 To 2 For e = 0 To 2 For d = 0 To 2 '要素がすべて1 For i = 1 To a For j = 1 To b Cells(i, j) = 1 Next j Next i If bbbb = 1 Then Cells(a - 2, b - 2) = 0 ElseIf bbbb = 2 Then Cells(a - 2, b - 2) = -1 End If If bbb = 1 Then Cells(a - 1, b - 2) = 0 ElseIf bbb = 2 Then Cells(a - 1, b - 2) = -1 End If If bb = 1 Then Cells(a, b - 2) = 0 ElseIf bb = 2 Then Cells(a, b - 2) = -1 End If If aaaa = 1 Then Cells(a - 2, b - 1) = 0 ElseIf aaaa = 2 Then Cells(a - 2, b - 1) = -1 End If If aaa = 1 Then Cells(a - 1, b - 1) = 0 ElseIf aaa = 2 Then Cells(a - 1, b - 1) = -1 End If If aa = 1 Then Cells(a, b - 1) = 0 ElseIf aa = 2 Then Cells(a, b - 1) = -1 End If If total = 1 Then Cells(a - 2, b) = 0 ElseIf total = 2 Then Cells(a - 2, b) = -1 End If If sum = 1 Then Cells(a - 1, b) = 0 ElseIf sum = 2 Then Cells(a - 1, b) = -1 End If If con = 1 Then Cells(a, b) = 0 ElseIf con = 2 Then Cells(a, b) = -1 End If con = con + 1 Next d con = 0 sum = sum + 1 Next e sum = 0 total = total + 1 Next f total = 0 aa = aa + 1 Next g aa= 0 aaa = aaa + 1 Next h aaa = 0 aaaa = aaaa + 1 Next k aaaa = 0 bb = bb + 1 Next l bb = 0 bbb = bbb + 1 Next m bbb = 0 bbbb = bbbb + 1 Next n End Sub

  • visual basicについて

    visual basic6.0を使ってプログラミングの練習をしています。 入力した4つの整数を 以下の構文だと「定数式が必要です」とエラーがでてしまいます。 Option Explicit Dim a As Variant Dim b As Variant Dim c As Variant Dim d As Variant Private Sub Command1_Click() 'テキストに記入されたデータを代入 text1.Text = a text2.Text = b text3.Text = c text4.Text = d '4つの整数を1つの配列とする Dim F(a, b, c, d) As Variant If IsvbInteger(F) Then 'もしa,b,c,dいずれも有効な整数だったとき Call cbs.BubbleSort(F, UBound(F) + 1, True) '配列Fをバブルソート string1 = "" For j = 0 To UBound(F) stringx = stringx & F(j) & "," Next j Label1.Caption = stringx 'ラベルテキストにカスケード ElseIf vbArray(a, b, c, d) Then 'もし数字が重複していたとき msg = "整数が重複しています" btn = vbOKOnly Title = "警告" ElseIf F(a, b, c, d) = 0 Then '配列のうちどれかひとつでも0があったら msg = "0は無効です" btn = vbOKOnly Title = "警告" ElseIf isvbnull(a, b, c, d) Then '4つのうちどれかが空欄だったとき msg = "無効の値です" btn = vbOKOnly Title = "警告" Else '整数じゃなかったとき msg = "整数を入力してください" btn = vbOKOnly Title = "警告" End If '以上 End Sub なにかつっこむところがあったら教えて下さい。

  • エクセルマクロで「1」を「01」に変換したい

    エクセルマクロで、セルに入力された数値を、 変換するマクロを以下のように作成したのですが、 もっと簡単な方法はないのでしょうか。 やりたいことは、 「1」で入力された値を「01」に変換することです。 よろしくお願いします。 c = Sheets("Sheet1").Cells(1, 1).Value If c = 1 Then c = "01" ElseIf c = 2 Then c = "02" ElseIf b = 3 Then c = "03" ElseIf c = 4 Then c = "04" ElseIf c = 5 Then c = "05" ElseIf c = 6 Then c = "06" ElseIf c = 7 Then c = "07" ElseIf c = 8 Then c = "08" ElseIf c = 9 Then c = "09" End If

  • EXCEL2002 VBAのループ処理について

    セルB1~B24に入力した数字を i とすると、 コマンドボタンを押したときに、セルB1~B24にの全てに値が入力されていて、 セル( F & i )が空白であれば、そこにセルA1の値を入れるようなマクロを作成しています。 セル( F & i )への入力は、セルB1~B24の全部に数値が入力されており、セル( F & i )が空白があるときのみ処理が実行されるように。どちらかが満たされない場合には、メッセージボックスを表示し、処理しないようにしたいのですが、どうしても途中まで入力されてしまいます。 以下のようなコードですが、何か良い方法はないでしょうか? Private Sub CommandButton1_Click() 'ロール確認 Dim 入力 As String, パレット As String Dim i As Long, t As Long For i = 1 To 24 入力 = Range("B" & i) パレット = Range("F" & i) If 入力 = "" Then MsgBox "aaa" Exit For End If 'パレットNo.転記 If パレット <> "" Then MsgBox "bbb" Exit For ElseIf パレット = "" Then Range("F" & 入力).Value = Range("A1").Value End If Next i End Sub

  • エクセルのInputBoxについて教えてください。

    エクセル2010です。 InputBoxについて教えてください。  負数以外の数値を受け取りたいのです。 以下のようにやってみました。 Sub test001() Dim ans As Double ans = Application.InputBox("数値を入力", Type:=1) If ans = False Then MsgBox "キャンセル" Exit Sub ElseIf ans < 0 Then MsgBox "負数は不可。" Call test Else MsgBox ans & "を受け取りました。" End If End Sub 一応、これで動くのですが、問題は数値0を入力された場合です。 0はFalseと認識されるようで、キャンセルとなってしまいます。0は0という数値で受け取りたいのです。 試行錯誤の結果、Type:=1をやめ、変数ansをVariantにして If ans = “False” Then と、Falseをダブルクォーテーションでくくると、0を数値としてくれるようです。でも理屈がわかりません。変数ansにキャンセルボタンで帰ってくるのはBooleanのFalseであり、Stringの”False”ではないと思うのですが。 Sub test002() Dim ans ans = Application.InputBox("数値を入力") If ans = "False" Then MsgBox "キャンセル" & TypeName(ans) Exit Sub ElseIf ans = "" Then MsgBox "未入力" & TypeName(ans) Call test002 ElseIf Not IsNumeric(ans) Then MsgBox "数値ではありません。" & TypeName(ans) Call test002 ElseIf ans < 0 Then MsgBox "負数は不可。" & TypeName(ans) Call test002 Else MsgBox ans & "を受け取りました。" & TypeName(ans) End If End Sub あと、もうひとつ質問は、数値以外の入力があった場合、再度入力させるためいちいちCall test002 を入れてますが、このやり方でただしいのでしょうか?

  • Exsel プログラムなんですが・・・。

    簡単なゲームを作ってみようと思い、ExcelでAからZまでの文字を入れて正解の文字を当てるものを作っています。 しかし、本を参考に作ってみたのですが、Ifの所で型が一致しませんと出るのですが、どこが間違っているのか分かりません。 できれば、Ifとwhile~Loop,を使って作りたいのですが・・・。 どなたか、詳しい方、ご教授の程よろしくお願いします。 以下、作成したものです。 Sub Ex667() Dim a As String Dim b As String Dim i As Integer a = "J" i = "A" a = InputBox("AからZまでの文字を入力", "文字当て", "A") Do While a <> "" i = i + 1 If a = b Then MsgBox i & "回目で正解!" Exit Do ElseIf "A" < a And a < "Z" Then If a = b Then a = InputBox("もっと後の数です。", "ハズレ") Else a = InputBox("もっと前の数です。", "ハズレ") End If Else a = InputBox("入力ミス") End If Loop End Sub 回答よろしくお願いします。

  • worksheetchangeイベント

    Private Sub Worksheet_Change(ByVal Target As Range) Dim myRng As Range Set myRng = Application.Intersect(Target, Range("A1:D2,A4:D6")) If myRng Is Nothing Then Exit Sub If WorksheetFunction.CountA(myRng) = 0 Then myRng.Value = "-" ElseIf Intersect(Target, Range("A1")).Value = "139.8" Then Range("B1:D1").Value = "-" End If End Sub A1:D2範囲とA4:D6範囲内で、アクティブセルでDELETEキーを押した場合、"-"がセルに挿入されるようにコードを書きました。 さらに、A1セルの値がドロップダウンリストで139.8に変更された場合、B1、C1、D1に"-"を入力するようにしました。 A1セルの値を変更した場合の処理がうまくいかず四苦八苦しています。 ElseIf Intersect(Target, Range("A1")).Value = "139.8" Then ここを、 Range("A1").value = "139.8" Then にしてしまうとA1の値が139.8の状態ではB1、C1、D1へ数値を入力しても"-"となってしまいます。 A1からD1まで連動したリストがリアルタイムで動作するようにコードを書きたいのですが・・・なんとか教えていただけませんでしょうか・・

  • マクロ 任意の日付のセルを選択する方法

    いつも回答して頂きありがとうございます。 インプットボックスを使用して、任意の日付の期間を選択する方法がさっぱり分かりません。御指導の程宜しくお願い致します。あと、この記述方法では、『If Not ?? Is Nothing Then』がいるのでしょうか? シートの詳細 ・B4から下方向に日付が連番で記載されている。 Sub 範囲の選択() Dim Date1 As Date Dim Date2 As Date Dim b1 As Variant Dim b2 As Variant Date1 = Application.InputBox("最初の日付を2012/11/1のように入力してください。") Date2 = Application.InputBox("最後の日付を2012/11/31のように入力してください。") With Worksheets("集計用") Set b1 = .Columns("B").Find("Date1", , xlValues, 1) Set b2 = .Columns("B").Find("Date2", , xlValues, 1) .Range(b1, b2).Select End With End Sub