• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.netでのカレーパレットについて)

VB.netでのカレーパレットについて

このQ&Aのポイント
  • VB.netでカレーパレットを表示し、制限された色のみ選択できる方法について質問です。
  • Excelファイル作成時にはExcelのColorindexで指定されている色しか使用できず、カレーパレットも同様に制限されています。
  • colorDialogを使用した場合にはColorindexの値のみ表示され、自作パレットの機能はないようです。他の手段で実現する方法があるのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

下記を参考に考えてはいかがでしょう。 ExcelのカラーインデックスはRGBではどの色に当たるか?。 以下は例として少なくするため、11までの繰り返しにしていますが、56(57行)までの繰り返しでやってください。(Colorindexが56までなので) ExcelでのVBA Sub test02() For i = 2 To 11 Cells(i, "A") = i Cells(i, "B").Interior.ColorIndex = i Next i End Sub これでExcelのカラーインデックスの実物色がB列のセルに出来る ーーー Sub test03() For i = 2 To 11 Cells(i, "C") = Cells(i, "B").Interior.Color Next i End Sub これでC列にB列の色のRGBコードが出る(10進) ーーーー Sub test05() Dim lngred As Long Dim lnggreen As Long Dim lngblue As Long For i = 2 To 11 lngcode = Cells(i, "C") Cells(i, "F") = Int(lngcode / 256 ^ 2) lngcode = lngcode - Int(lngcode / 256 ^ 2) * 256 ^ 2 Cells(i, "E") = Int(lngcode / 256) Cells(i, "D") = lngcode - Int(lngcode / 256) * 256 Next i End Sub でR、G、Bコードに分解して Rー>D列 G->E列 B->F列 に数値が出る。 ーー Sub test04() For i = 2 To 11 Cells(i, "H").Interior.Color = RGB(Cells(i, "D"), Cells(i, "E"), Cells(i, "F")) Next i End Sub 念のためにH列にRGB指定で色を再現。同じ色であることを確認出来る。 VB.NETの方で>入力画面に表示しているパレットの方もそれに、RGB指定によって、あわせてはどうですか。 ーーー なおエクセルはRGBでⓇ,G,Bの0-255以内の勝手な組み合わせを指定しても56色に近い色に鞘寄せするように聞いています(?) ただしそのルールは、私には今にわかには判りません。

kbiz
質問者

お礼

ご回答ありがとうございます。 ご返事遅くなりまして大変申し訳ありません。 (本当に申し訳ありません) 頂いた表記で各colorindexのRGBを取得しパレットを自作することができました。サードパーティ製ツールが56値しか対応していないので結構鳴動でしたが、何とか完成しました。 パレット側ではRGB以外にAも考慮する必要があるのですね。 (255で固定しましたが) いろいろありがとうございました。

関連するQ&A