Excel97を使ってます。
VBAで色を指定する際、vbRedなどと記述しますが、他の色の名称が一覧になっているようなものを探しています。
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

たぶんLightBlueとかはHTMLの話ですよね。


もしVBAができるなら以下のソースではだめでしょうか?
ちょっと手抜きですけど....
あ、ARCさんのいうとおり色は丸められてるみたいです。
SUB mkCOLORS()
Dim i As Integer
Dim j As Integer


'赤系
For i = 1 To 20
For j = 1 To 20
Cells(i, j) = "RGB(255, " & i * 10 & "," & j * 10 & ")"
Cells(i, j).Font.Color = RGB(255, i * 10, j * 10)
Next
Next
'緑系
For i = 1 To 20
For j = 1 To 20
Cells(i + 21, j) = "RGB(" & i * 10 & ",255," & j * 10 & ")"
Cells(i + 21, j).Font.Color = RGB(i * 10, 255, j * 10)
Next
Next
'青系
For i = 1 To 20
For j = 1 To 20
Cells(i + 42, j) = "RGB(" & i * 10 & "," & j * 10 & ",255)"
Cells(i + 42, j).Font.Color = RGB(i * 10, j * 10, 255)
Next
Next

END SUB

みづらくてすいません
    • good
    • 0

あ、HTMLの色定数と同じにするなら、


Const vbLightBlue = &HE6D8AD 'Hex(RGB(230, 216, 255))

でしたね。
&Hに続けて、青,緑,赤の順に16進で書きます。
    • good
    • 0
この回答へのお礼

皆さんのご回答ありがとうございました。
結局はRGBしかないようですね。

お礼日時:2001/11/24 13:10

VBにどんな定数が登録されているのかを知るには「オブジェクトブラウザ」を使います。


VBEの画面でF2キーを押し、オブジェクトブラウザを表示させます。
んで、「vbRed」を検索すると、「VBA.ColorConstants」ってのが見つかると思います。
ここを見ると、どんな色が定数として登録されているのかが分かります。

つまり、「ごくごく基本的な色しか登録されていない」っていうのが結論です(汗)。

自分で色定数を登録してもいいんじゃないでしょうか。
コードの先頭に
Const vbLightBlue = &HFF8080 'Hex(RGB(128, 128, 255))
とか書いたりして(^^;
    • good
    • 0

欲しい色が無ければ、自分で作ってしまえばいいんですよ。



Range("A1").Font.Color = vbRed
は、
Range("A1").Font.Color = RGB(255, 0, 0)
と同じです。RGB関数に、(赤の濃度,緑の濃度,青の濃度)の順で指定してやると、任意の色を作れます。

ただし、Excelの場合ですと、実際に指定できる色は限られています。
微妙な色を指定しても、自動的に「Excelで使えるそれに似た色」に丸められてしまうのです。
具体的には、Excelの色選択画面に表示される色の、どれかになってしまいます。

Wordとかですと、指定した色がそのまま表示されるんですけどねぇ(^^;
    • good
    • 0
この回答へのお礼

ありがとうございました。
RGBは知っていたのですが、例えばvbLightBlueとすると、薄い青になる・・といったものを考えていました。
このようなものが一覧になってどこかで公開されてないものでしょうか?

ちなみに、質問にはExcelと書きましたが、Wordでも同じことをしたいと思ってます。

お礼日時:2001/11/23 13:53

分からないときはMSDNをみるといいですよ。

ヘルプより充実しているかも。
vbRedとかは「カラー定数」というものです。

参考URL:http://www.microsoft.com/JAPAN/developer/library …
    • good
    • 0
この回答へのお礼

ありがとうございました。
こんな便利なHPもあったんですね。
欲を言えば、薄い緑とか濃い黄色とか、あいまいな色のカラー定数があればと思ってます。
他にないでしょうか?

お礼日時:2001/11/22 23:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルのVBAで特定のフォルダ内にあるファイル名称の一覧を取得できるような方法は?

始めまして、ボスからの依頼ですが、わからなくて困っています。

ひとつのフォルダに複数のエクセルファイルを保存し、それぞれのファイル(ブック)に対して加工を施すマクロを実行したいと考えています。その際、特定のフォルダ内にあるファイル名称の一覧を取得するようなマクロがあれば、1回の実行ですべてのファイルを加工できるので、時間の短縮を図れると考えました。
そこで、そのようなことができるマクロ(マクロ単体ではなく、いくつかのマクロを組み合わせて取得する方法でも構いません)をご存知の方がいらっしゃいましたら教えていただけませんでしょうか。

よろしくお願いします。

Aベストアンサー

できました?

久しぶりに、VBSで遊んでます<私(^^)
ファイル一覧取得用

Dim objFileSystem
Dim objFolder
Dim FolderName
Dim EachFile
Dim strList

'知りたいフォルダをフルパスで入力。例として、C直下
FolderName = "C:\"

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileSystem.GetFolder(FolderName)

'Text1を空に

Text1 = ""

'フォルダ内のすべてのファイル名称をゲットして
'strList変数にまとめていく。

For Each EachFile In objFolder.Files
Text1 = EachFile.Name
strList = strList&"\" & Text1
Next

'strList変数にまとめたファイル名を、
'Split関数で分割。

strA = split(strList,"\")

'メッセージボックスでひとつずつ表示。
'ここで、ひとつずつファイル名が分割されるので、
'処理を行うなら、ここに記述すればよいでしょう。

For Each StrA In StrA
Msgbox strA
Next

End

では。

できました?

久しぶりに、VBSで遊んでます<私(^^)
ファイル一覧取得用

Dim objFileSystem
Dim objFolder
Dim FolderName
Dim EachFile
Dim strList

'知りたいフォルダをフルパスで入力。例として、C直下
FolderName = "C:\"

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileSystem.GetFolder(FolderName)

'Text1を空に

Text1 = ""

'フォルダ内のすべてのファイル名称をゲットして
'strList変数にまとめていく。

For Each EachFile In ...続きを読む

Qフォルダ指定ダイアログ(Excel97VBA)

とあるサイトで、下記のようにして、フォルダを指定するダイアログを表示させるコードを見つけました。

Set objKng = CreateObject("Shell.Application")
Set dirKng = objKng.BrowseForFolder(0, "フォルダを選択してください。", 0)

上記2行についてどなたか解説して頂けないでしょうか?
特に、("Shell.Application")の""内の意味・他に何ができるのか、(0,"・・・",0)のゼロが分かりません。

また、このダイアログで、IF文を使って条件分岐させるにはどうすればいいのでしょうか?
以下のような感じで作りたいのですが。

If キャンセル押下時 then
Exit Sub
Else
実行
End If

宜しくお願いします。

Aベストアンサー

>しかし、使い方が分かりません。(^^ゞ
すいません。説明不足でした。

まず、EXCELのVBEから「挿入」「標準モジュール」を選択します。
Module1というウインドウが表示されます。
そこに#1で回答した<標準モジュール>以下<呼び出し側>以前までコピーして貼り付けます。

貼り付けた下の行に以下のサンプルコードをコピーして貼り付けます。
<サンプルコード>
Sub test()
Dim FolderStr As String
FolderStr = ComdlgGetFolderStr("フォルダを指定してください。")
If FolderStr = "" Then
  Exit Sub
Else
  Debug.Print FolderStr
End If
End Sub

イミディエイトウインドウに"test"と入力し、エンターを押します。

すると見たことのあるフォルダー選択画面が出てきますので選択して「OK」をクリックします。

イミディエイトウインドウに選択したフォルダーのパスが表示されます。

>APIって何?
私も詳しくないのですが、OSとの橋渡し的存在だと思っています。違っていたらご指摘ください。

>しかし、使い方が分かりません。(^^ゞ
すいません。説明不足でした。

まず、EXCELのVBEから「挿入」「標準モジュール」を選択します。
Module1というウインドウが表示されます。
そこに#1で回答した<標準モジュール>以下<呼び出し側>以前までコピーして貼り付けます。

貼り付けた下の行に以下のサンプルコードをコピーして貼り付けます。
<サンプルコード>
Sub test()
Dim FolderStr As String
FolderStr = ComdlgGetFolderStr("フォルダを指定してください。")
If FolderStr = "" Then
 ...続きを読む

Qエクセル97・ワード97・アウトルック97が入ったCD-ROMを小屋から発見しました。何につかえるでしょうか?

小屋の中を整理していたら7年前に買った
エクセル97・ワード97・アウトルック97が入った一枚のCD-ROMを発見しました。
(オフィス○○○○とはどこにも書いてありません)
現在持っている自作パソコンでOEM版のXPホームはあるんですが
エクセルなど高いので買っていませんでしたので
これを気に自作パソコンにインストールしたいと思っています。
そこで質問なんですが。
(1)これはエクセル2003とかにアップグレードすることができるのでし ょうか?
(2)XPでも使えるのでしょうか?
(3)機能的に97は使えるのでしょうか?
(4)その他 何か教えてください

回答お願いします。

Aベストアンサー

追伸です。

http://www.microsoft.com/japan/office/system/upgrade.mspx#EAAA
97はぎりぎりアップグレード版の対象になっているようです。

QExcel 指定したフォルダから指定したファイルを、指定フォルダへ移すVBAを教えて頂けないですか?

指定フォルダ名、指定ファイル名は、管理シートに記載し指示する形です。またそのファイルを元のフォルダへ戻す指示も、管理シートを書き直すのではなくできたら嬉しいです。どなたかよろしくお願いいたします。

Aベストアンサー

No.6 の修正

上書き時にエラーが発生していました。
「Kill (先パス & "\" & Cells(行, 2).Value)」を次のように追加してください。
-----------------------------------------------------------------------------
Sub 送る()
Call 移動("送り")
End Sub

Sub 戻す()
Call 移動("戻し")
End Sub

Sub 移動(モード As String)
Dim 基本パス As String
Dim 元パス As String
Dim 先パス As String
Dim 行 As Long
Dim 回答 As Integer
基本パス = ThisWorkbook.Path & "\"
Sheets("管理シート").Select
For 行 = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If モード = "送り" Then
元パス = 基本パス & Cells(行, 1).Value
先パス = 基本パス & Cells(行, 3).Value
Else
元パス = 基本パス & Cells(行, 3).Value
先パス = 基本パス & Cells(行, 1).Value
End If
If Dir(元パス & "\" & Cells(行, 2).Value) = "" Then
Range(Cells(行, 1), Cells(行, 3)).Select
回答 = MsgBox("元のファイルがありませんでした。" & Chr(13) & _
"飛ばしてして作業を続けますか?" & Chr(13) & Chr(13) & _
"はい : 飛ばして続行" & Chr(13) & Chr(13) & _
"いいえ : 全作業を中止して終了", vbDefaultButton2 + vbYesNo, モード)
If 回答 = vbNo Then Exit Sub
Else
If Dir(先パス & "\" & Cells(行, 2).Value) <> "" Then
Range(Cells(行, 1), Cells(行, 3)).Select
回答 = MsgBox("同名のファイルがありました。" & Chr(13) & _
"上書きしますか?" & Chr(13) & Chr(13) & _
"はい : 上書きして続行" & Chr(13) & Chr(13) & _
"いいえ : 上書きせず、飛ばして続行" & Chr(13) & Chr(13) & _
"キャンセル : 全作業を中止して終了", vbDefaultButton1 + vbYesNoCancel, モード)
If 回答 = vbCancel Then Exit Sub
If 回答 = vbYes Then
Kill (先パス & "\" & Cells(行, 2).Value)
Name 元パス & "\" & Cells(行, 2).Value As 先パス & "\" & Cells(行, 2).Value
End If
Else
Name 元パス & "\" & Cells(行, 2).Value As 先パス & "\" & Cells(行, 2).Value
End If
End If
Next
MsgBox ("終了しました")
End Sub
-----------------------------------------------------------------------------

No.6 の修正

上書き時にエラーが発生していました。
「Kill (先パス & "\" & Cells(行, 2).Value)」を次のように追加してください。
-----------------------------------------------------------------------------
Sub 送る()
Call 移動("送り")
End Sub

Sub 戻す()
Call 移動("戻し")
End Sub

Sub 移動(モード As String)
Dim 基本パス As String
Dim 元パス As String
Dim 先パス As String
Dim 行 As Long
Dim 回答 As Integer
基本パス = ThisWorkbook.Path & "\"
Sheets("管理シート").Select
...続きを読む

QエクセルVBA If Then 構文でOR条件の場合のVBA記述方法は?

仮にセル("A1")が空白か Falseの場合は Then 以下のことをする。
と書きたいのですが

If Sheets("Sheet1").Range("A1")="" Then
~略

If Sheets("Sheet1").Range("A1")=False Then
~略

と別々に記載する方法しかわかりません。

ワークシート関数のようにIF(OR(A1="",A1=False),~略)というようにまとめて記述するにはどう書けばいいのでしょうか?

AND条件の場合も教えてください。よろしくお願いします。

Aベストアンサー

If Sheets("Sheet1").Range("A1")="" Or Sheets("Sheet1").Range("A1")=False Then

でokですヨ。ちなみにAndの場合は、上記のOrの箇所をAndに変更するだけです。


このカテゴリの人気Q&Aランキング

おすすめ情報