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&Aを見た人が検索しているワード

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

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

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 ...続きを読む

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

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
 ...続きを読む

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

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はぎりぎりアップグレード版の対象になっているようです。

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

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
...続きを読む

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

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ランキング