フォーム色を指定したいのですが
右クリック→「塗りつぶし/背景の色」を見ると限られた色しか選択できないように見受けます。
例えばテキストボックスの背景の色なら、
「色の作成」で「色の設定」ダイアログを開き、自分好みの色を指定することが可能ですが
フォームの背景の色は自分好みの色を選択するのは無理ですか?(VBAでも?)
宜しくお願い致します。
(2003です)

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

A 回答 (2件)

アクセスにおいても下記のことが無いか注意されることを。


エクセルのようにコードでRGB指定色の指定は沢山の種類分できるが、実際現れるのは56種(パレットに載せられる色数)と言ったケースが無いかWEBで調べてみたが、アクセスでははっきりしない。
エクセルの例
Sub test01()
Range("a2").Clear
Range("a4").Clear
Range("a6").Clear
MsgBox "B"
ActiveWorkbook.Colors(4) = RGB(250, 150, 250)
Range("A2").Interior.ColorIndex = 4
MsgBox "A"
ActiveWorkbook.Colors(4) = RGB(150, 250, 150)
Range("A4").Interior.ColorIndex = 4
Range("A6").Interior.Color = RGB(150, 250, 150)
End Sub
RGB()内は1600万色指定できる。しかしパレットの番号は
56種しかないので、そこへ登録する色を変えると、同じRange("A2").Interior.ColorIndex = 4
でも見える色が違う。MsgBox "A"が表示される一瞬の色を覚えておいて、最終と比べてください。
ColorINDEXを使わず、直接RGBが使えれば、
Range("A6").Interior.Color = RGB(150, 250, 150)
(エクセルでは出来る)問題ない。
アクセスとエクセル
2007とそれ以前
の問題で、情報が十分でなく、はっきりしないのに、ものを言って、済みませんが。
    • good
    • 0
この回答へのお礼

ありがとうございました。参考になりました。
しかし1600万色はすごいですね。

お礼日時:2009/05/24 21:57

> テキストボックスの背景の色なら、「色の作成」で「色の設定」


> ダイアログを開き、自分好みの色を指定することが可能ですが

フォーム(というか『詳細』領域)の背景色も、テキストボックス等と
同様に設定できます。

テキストボックスなどがないところをクリックして、コントロールが何も
選択されていない状態(『詳細』領域)が選択された状態にしたら、
あとはテキストボックスのときと同様の操作で、色を自由に設定
できますので、お試し下さい。
(フォーム/ページのヘッダ/フッタを表示している場合も、同様の
 操作で設定できます)
    • good
    • 0
この回答へのお礼

フォームで探してたら見つかりませんでしたが
詳細で設定すればできました!
ありがとうございました。

お礼日時:2009/05/24 21:59

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

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

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

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

QAccess2007のフォームウイザードでデータシートを作りたいが方法が分からない

Access2003では、フォームウイザードでデータシートを作れたが。
Access2007では、フォームウイザードでは単票のフォームしか作れない様だ。

どうやって、作るのだろうか。操作が分からない。

Aベストアンサー

どういう帳票が欲しいかわかりませんが一応例として....
まずAccess上部にある作成をクリックします。
フォームウィザードをクリックして使用するテーブルとフィールドを選択します。
次に表形式を選択すれば帳票形式でフォームが作成されます。

もう1つはその他のフォームから複数のアイテムを選択すれば帳票形式でフォームが作成されます。

QAccessで、フォームAからダイアログモードで立ち上げたフォームBを開き、フォームBを閉じた時にフォームA側でマクロを実行したい

タイトルのままなのですが、

フォームA(メインとなる画面)と
フォームB(コードの検索画面)があり、
フォームAからフォームBをダイアログモードで開いている状態から、
フォームBを閉じたときに、フォームA側でマクロを実行したいと思っています。

具体的には、フォームAにコード入力用のテキストボックスがあり、コード検索のためにフォームBを立ち上げ、コードを選択した後フォームAのテキストボックスにそのコードを入れて、そのコードの値を元にフォームAにあるコンボボックスの再クエリを行いたいのです。

コンボボックスの再クエリの方法等は理解しているのですが、
上記のような場合に、どのイベントがキックされるのかが分かりません。
どのようにすれば(どのイベントを選んでマクロを指定すれば)適切に実行できるでしょうか。

Aベストアンサー

フォームBの処理
「値の代入」
「オブジェクトの選択」
  オブジェクトの種類:フォーム
  オブジェクト名:フォームA
「再クエリ」
  コントロール名:コンボボックス名
でいかがでしょうか?

Q【Access】複数フォームを閉じる時の、選択処理について

Access Ver. : 2003
Windows Ver.: XP

Accessフォームの「閉じる時」処理で、下記のような工夫をした
いと考えております。

・フォームがひとつしか開かれていないとき、Accessを終了する
・複数のフォームが開かれている時、そのフォームのみを閉じる

そんなVBAコードがありましたら、教えてください。
何か参考になるページでも、かまいません。
どうぞ、宜しくお願いいたします。

Aベストアンサー

forms.count で開いているフォーム数を得て分岐
Application.quit

Access VBE のヘルプで、CurrentProject オブジェクト を見てみたら?

Qアクセスフォームの塗りつぶしの色

アクセスフォームの塗りつぶしの色をこの40色以外の色を選択したいのですがどうすればいいですか?

ラベルなどの背景色は「色の作成」から沢山の中から選択できますが
フォームの色は無理ですか?

こうなったらラベルで自分の好きな色を作って
下にひくしかないでしょうか?
よろしくお願いします。

Aベストアンサー

No.1の方の回答でわかれば、無視していただいて構いませんが、
念のためということで・・・(汗)


添付画像にある右クリックメニューの中から、一番下の『プロパティ(P)』
を選択して、塗りつぶしたい場所のプロパティシートを開きます。

『書式』タブの下の方に『背景色』という項目がありますので、ここに
カーソルを移動すると、No.1の方の説明にある「...」(ビルダボタン)が
表示されますから、ここをクリックして、あとはラベルなどと同様に色を
作成して指定します。

QACCESSフォームのボタン表示

ACCESSフォームのボタン表示

ACCESS2000で作成したフォームのボタンはACCESS2007でも変わりません。
ACCESS2007で一から作成したMDBは、ボタンの表示スタイルが異なります。
※ボタンの角が丸く、マウスカーソルをボタンの上に当てるだけで色が変わる。
ACCESS2000で作成したMDBをACCESS2007で上記のように表示させる設定は
あるのでしょうか?
いろいろ見ても、見当たらないのです。
よろしくお願いします。

Aベストアンサー

[Office ボタン] - [Accessのオプション] - [カレントデータベース] で
「フォーム上のコントロールに Windows のテーマを使用する」にチェック。

QAccessフォームに進行状況ダイアログを表示したい

Access2000を使用しています。
DAOでデータ引き当て処理を行なっている最中、進行状況ダイアログ
を表示すれば時間の目安が付きやすいと思うのですが、やり方が分か
りません。Accessでフォームに表示するのは難しいのでしょうか?
ご存知の方、方法もふくめて宜しくお願いいたします。

Aベストアンサー

#3です。

Call InitProgressとCall UpdateProgress(処理数/合計数)の後に、DoEventsを入れてもダメ?

QExcelで作成されたフォームをAccessにコンバージョンしたいので

Excelで作成されたフォームをAccessにコンバージョンしたいのですが、フォームのインポートはできないのでしょうか?
Accessのフォーム作成画面から、インポートを選択していって、Excelファイルを開くのですが、シートしか選択できません。
コントロールのコピペもできないみたいですが。。。
Excelで作成されたフォームはAccessにはインポートできないのですか?
コーディングをそっくり使用することはできなくても、せめてフォームのデザインはコピーしたいのですが。。。(> <)
よろしくお願いします。m(_ _)m

Aベストアンサー

質問者はプロかプロ経験者ですか。でないならこんな勉強は試みないほうが良いでしょう。
市販の書物や初心者向けの講習で説明される話題ではない。プロで会社にその辺の経験者がいたりすれば聞けるでしょうが。原理的には最熟練者の人は変換プログラムは組めるかもしれませんが、そのレベルの人は、この質問コーナーを読んでないでしょうし、無料で教えるスキルではないと思います。
WEBの記事も多分少ないでしょう。
Googleででも「エクセル フォーム アクセス 移行」で出てくる記事を参考にしてはどうでしょう。
http://www.accessclub.jp/bbs2/0080/beginter24987.html
同じ発想の人はいることはいるが。
ーー
VBAとVBのフォームはコードで扱う上で微妙に違うし、アクセスVBAとエクセルVBAでは違う点も多い。
またコントロールの生成もコードで行う方法は隠して、易しいD&Dやマウスによる移動、プロパティボックスでの入力にして易しくしています。
エクセルのUserForm1のフォームも本格的なものではないサービスのような気がする。エクセルで第3者を巻き込んだ業務の開発までは予定して無いように推測する(何でもエクセル的な過大期待が横行している)。
それにエクセルでのセルとの連携をつけた機能LinkedCell、FillいstRangweなどはエクセル特有で、RecordSourceのSQL指定やフォーム指定はアクセス特有と思います。
外観を決めるサイズや書式関係は(エクセルでフォームやコントロールの)プロパティーメモー(アクセスでのフォームやコントロールの)プロパティ設定でやや似せて移せるかもしれない。
エクセルバージョン内の相違、エクセル・アクセルで使えるコントロールの種類の相違などもあります。

質問者はプロかプロ経験者ですか。でないならこんな勉強は試みないほうが良いでしょう。
市販の書物や初心者向けの講習で説明される話題ではない。プロで会社にその辺の経験者がいたりすれば聞けるでしょうが。原理的には最熟練者の人は変換プログラムは組めるかもしれませんが、そのレベルの人は、この質問コーナーを読んでないでしょうし、無料で教えるスキルではないと思います。
WEBの記事も多分少ないでしょう。
Googleででも「エクセル フォーム アクセス 移行」で出てくる記事を参考にしてはど...続きを読む

QAccess VBA ダイアログ指定 CSVエクスポート

お世話になります
CSVファイルをAccessにインポートしたいのですが。

■検索ボタンクリック→ダイアログBOXでファイル指定→
選んだCSVファイル場所をテキストボックスに保存→
確認ボックス→はい→インポート開始
と言う具合が理想ですが可能ですか?

■また、実行中、待ち時間インジケータでインポートの進捗状況を
把握したいのですが

ちなみにファイル名、ワークシート名は毎回異なりますが列名は同じです。
判る方ご教授お願いします。

Aベストアンサー

インポート定義が保存されていないようですが。

とりあえず
Private Sub 実行_Click()
  'TextConv Me.テキスト1, "テーブルA", "テーブル1"
  TextConv Me.テキスト1, "", "テーブル1"
End Sub
にすれば、インポートは出来ます。

インポート定義ができたら、その名前にしてください。

> ■全データ削除ではなく追加していきたい

'テキストコンバートルーチン
Sub TextConv(strFle As String, strInp As String, strTbl As String)
  If MsgBox("インポートしますか?", 4, "実行確認") = vbYes Then
    DoCmd.TransferText acImportDelim, strInp, strTbl, strFle, True
    '1行目がヘッダーなら、最後の TRUE が必要です。
    MsgBox "テーブルデータを更新しました"
  End If
End Sub

> ■CSVには不要な列もある
ということであれば「インポート定義」は必須です。
もう一度、
手動で、ファイルメニューから
[外部データの取り込み] - [インポート]
ファイルの種類でテキストファイルを選択し、
「Table.csv」を選択してインポートをクリック。
以下、ウィザードの画面で
「区切り記号付き」を選択して「次へ」をクリック。
「フィールド区切り記号」を「カンマ」、
「先頭行をフィールド名として使う」にチェック、
ここで 「設定」ボタンをクリックして、インポート定義の画面に。
必要なら、フィールド名を書き換える。
(CSV の ヘッダとテーブルのフィールド名が異なる場合など)
必要ならデータ型を書き換える。
(0001 というコードが数値にされてしまうと困る場合など)
インポートしないフィールドは「スキップ」欄にチェックする。
ここで 「保存」ボタンをクリック。
必要なら「定義名」を書き換えて、「OK」をクリック。
定義名は忘れないでメモしてね。
デフォルトで表示される名前には、スペースが含まれているので注意。
「OK」をクリックして、インポート定義の画面に。
「OK」をクリックして、ウィザードに戻る。
あとは、次へでインポートを続けても、キャンセルでも結構です。

インポ-ト定義に不具合があるようなら、
再度、手動でインポートし
インポ-ト定義画面で、「定義」ボタンを押せば呼び出せます。
修正して上書きしましょう。

ご健闘をお祈りします。

インポート定義が保存されていないようですが。

とりあえず
Private Sub 実行_Click()
  'TextConv Me.テキスト1, "テーブルA", "テーブル1"
  TextConv Me.テキスト1, "", "テーブル1"
End Sub
にすれば、インポートは出来ます。

インポート定義ができたら、その名前にしてください。

> ■全データ削除ではなく追加していきたい

'テキストコンバートルーチン
Sub TextConv(strFle As String, strInp As String, strTbl As String)
  If MsgBox("インポートしますか?", 4, "実行確認")...続きを読む

QVBからmdbファイル(Access2000)の特定のフォームを開きたい?

VisualBasicのフォームに配置したコマンドボタンをクリックすることで、特定のmdbファイルをAccess2000で開き、開くと同時に特定のフォームが表示されるようにしたいのですが、こんなことできますか?できるとすればどのようにすればよいのですか?

例えば、C:\商品管理\在庫一覧.mdbにフォーム商品があるとしたとき、
Form1のcommand1をクリックすると、C:\商品管理\在庫一覧.mdbがAccess2000で開き、フォーム商品が最初に表示されるようにしたいのですが・・・
ちなみに、Access2000の起動時の設定では他のフォームが最初に開くようになっています。
よろしくお願いします。

Aベストアンサー

オートメーションを使ってAccessを制御しましょう。
で、他のフォームが最初に開くようになっていることなので、最初に開くフォームを閉じてからAccessを表示するようにすればいいと思います。

Dim acs as Object

'AccessのApplicationオブジェクトを取得する。
Set acs = CreateObject("Access.Application")

'c:\test.mdbを開くacs.OpenCurrentDatabase "c:\test.mdb"

'起動時に開かれたフォームを閉じる
'2はacForm定数のこと
acs.Close 2,"フォーム名"

'Accessを表示させる
acs.Visible = True

'表示させたいフォームを開く
acs.OpenForm "フォーム名"


こんな感じで。

最後に、Accessを終わらせるときは

'オブジェクトの開放
Set acs = Nothing

で、オブジェクトを開放してください。

オートメーションを使ってAccessを制御しましょう。
で、他のフォームが最初に開くようになっていることなので、最初に開くフォームを閉じてからAccessを表示するようにすればいいと思います。

Dim acs as Object

'AccessのApplicationオブジェクトを取得する。
Set acs = CreateObject("Access.Application")

'c:\test.mdbを開くacs.OpenCurrentDatabase "c:\test.mdb"

'起動時に開かれたフォームを閉じる
'2はacForm定数のこと
acs.Close 2,"フォーム名"

'Accessを表示させる
acs.Visibl...続きを読む

QEXCEL VBAでダイアログを表示、テーブル選択

win7/EXCEL、ACCESSともに2010を使用しています。

EXCEL/VBAで、ACCESSのテーブル名を指定しワークシートにコピーする下記のコードなんですが
コピーしたいテーブルをユーザがダイアログボックスから選択するように修正できればと思って
おります。Application.Filedialog(msofileDialogPicker)を合わせればいいのでしょうか?
色々試してみていますが、うまくいってくれません。どのようコードを組み合わせればよいのか教えていただきたく投稿させていただきました、何卒、よろしくお願いいたします。

'データをワークシートにコピー

Sub テーブルデータコピー()

'テーブルのデータをワークシートにコピーする
'Microsoft ActiveX Data Object xx Libraryを選択

Dim objDB As New ADODB.Connection
Dim myTBL As New ADODB.Recordset

'Accessデータベースに接続する
'Access2007/2010は「ACE.OLEDB.12.0」
'Access2000/2002/2003は「Jet.OLEDB.4.0」

objDB.Open _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Users\junior\Desktop\ACTESTフォルダ\ACTEST.accdb"

'データベースのテーブルを開く
myTBL.Open "T_TESTTABLE", objDB

'テーブルをワークシートにコピーする
Range("A3").CopyFromRecordset Data:=myTBL

'データベースを切断する
objDB.Close
'オブジェクトを解放する
Set objDB = Nothing

End Sub

win7/EXCEL、ACCESSともに2010を使用しています。

EXCEL/VBAで、ACCESSのテーブル名を指定しワークシートにコピーする下記のコードなんですが
コピーしたいテーブルをユーザがダイアログボックスから選択するように修正できればと思って
おります。Application.Filedialog(msofileDialogPicker)を合わせればいいのでしょうか?
色々試してみていますが、うまくいってくれません。どのようコードを組み合わせればよいのか教えていただきたく投稿させていただきました、何卒、よろしくお願いいたします。

'データ...続きを読む

Aベストアンサー

Application.Filedialog(msofileDialogPicker)ではデータベースの選択はできても、テーブルの選択は出来ません。
テーブルを選択するニーズは経験がありませんが、試しにやってみました。
UserFormにListBox一個と、CommandButton一個を置きます。
ADOに参照設定しないコードになっているので、ご質問のコードとは若干異なります。ご参考まで。
なお、エラー処理はしていないので、あしからず。
☆標準モジュール
Sub test()
UserForm1.Show
End Sub

☆UserForm1モジュール
Dim cnn As Object 'ADODB.Connection

Private Sub CommandButton1_Click()
Dim rst As Object 'ADODB.Recordset
Dim myTBLname As String

myTBLname = Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
Set rst = CreateObject("ADODB.Recordset")
rst.Open myTBLname, cnn
Range("A1").CopyFromRecordset Data:=rst
rst.Close
Set rst = Nothing
Unload Me
End Sub

'http://www.nurs.or.jp/~ppoy/access/excel/xlM068.html#ADO
Private Sub UserForm_Initialize()
'ADO OpenSchema メソッドを使用
Dim rst As Object 'ADODB.Recordset
Dim stProvider As String
Dim stPath As String
Dim i As Long
Dim myList() As String

Const adSchemaTables = 20

'Access2007,Access2010の場合
stProvider = "Microsoft.ACE.OLEDB.12.0"
stPath = getFilePath
If Dir(stPath) = "" Then Exit Sub
Set cnn = CreateObject("ADODB.connection")
cnn.Provider = stProvider
cnn.Open stPath
Set rst = cnn.OpenSchema(adSchemaTables, _
Array(Empty, Empty, Empty, "TABLE"))
i = 0
While Not rst.EOF
ReDim Preserve myList(0 To i)
myList(i) = rst.Fields("TABLE_NAME").Value
i = i + 1
rst.MoveNext
Wend
Me.ListBox1.List = myList
rst.Close
Set rst = Nothing
End Sub

Private Sub UserForm_Terminate()
cnn.Close
Set cnn = Nothing
End Sub

Private Function getFilePath() As String
'2002以降
With Application.FileDialog(msoFileDialogFilePicker)
If .Show = -1 Then
getFilePath = .SelectedItems(1)
Else
getFilePath = ""
End If
End With
End Function

Application.Filedialog(msofileDialogPicker)ではデータベースの選択はできても、テーブルの選択は出来ません。
テーブルを選択するニーズは経験がありませんが、試しにやってみました。
UserFormにListBox一個と、CommandButton一個を置きます。
ADOに参照設定しないコードになっているので、ご質問のコードとは若干異なります。ご参考まで。
なお、エラー処理はしていないので、あしからず。
☆標準モジュール
Sub test()
UserForm1.Show
End Sub

☆UserForm1モジュール
Dim cnn As Object 'ADODB....続きを読む


人気Q&Aランキング

おすすめ情報