DexMachina の回答履歴
- 現在開いている全てのフォームを閉じるVBA
どうして、サンプル2じゃダメなのか教えていただけますか? ------------------------------------------------------------- Sub サンプル1() 'フォームがひとつも開いてない時に実行してもエラーにならない。 Dim intCnt As Integer '全ての開いているフォームのループ For intCnt = Forms.Count - 1 To 0 Step -1 'コレクションの intCnt番目のフォームを閉じる DoCmd.Close acForm, Forms(intCnt).Name Next intCnt End Sub Sub サンプル2() 'フォームがひとつも開いてない時に実行してもエラーにならない。 Dim intCnt As Integer For intCnt = 1 To Forms.Count DoCmd.Close acForm, Forms(intCnt).Name Next End Sub ------------------------------------------------------------- サンプル1を実行すると、問題なく全てのフォームを閉じる事が出来ますが、 サンプル2だと、二つ開いているフォームのうち、1つ目は閉じる事が出来るのですが 2つ目のフォームを閉じようとすると、 実行時エラー 2456 "フォームを参照するときに使っている番号が正しくありません" となってしまいます。 私としては、サンプル1もサンプル2も同じ動きをするものだと思ってるのですが どうやら違うようです。 どうして、サンプル2じゃダメなのか教えていただけますか?
- 現在開いている全てのフォームを閉じるVBA
どうして、サンプル2じゃダメなのか教えていただけますか? ------------------------------------------------------------- Sub サンプル1() 'フォームがひとつも開いてない時に実行してもエラーにならない。 Dim intCnt As Integer '全ての開いているフォームのループ For intCnt = Forms.Count - 1 To 0 Step -1 'コレクションの intCnt番目のフォームを閉じる DoCmd.Close acForm, Forms(intCnt).Name Next intCnt End Sub Sub サンプル2() 'フォームがひとつも開いてない時に実行してもエラーにならない。 Dim intCnt As Integer For intCnt = 1 To Forms.Count DoCmd.Close acForm, Forms(intCnt).Name Next End Sub ------------------------------------------------------------- サンプル1を実行すると、問題なく全てのフォームを閉じる事が出来ますが、 サンプル2だと、二つ開いているフォームのうち、1つ目は閉じる事が出来るのですが 2つ目のフォームを閉じようとすると、 実行時エラー 2456 "フォームを参照するときに使っている番号が正しくありません" となってしまいます。 私としては、サンプル1もサンプル2も同じ動きをするものだと思ってるのですが どうやら違うようです。 どうして、サンプル2じゃダメなのか教えていただけますか?
- ACCESSアクションマクロでインポート件数表示
ACCESS2003を使用してます。 アクションマクロで、テキストをインポート後、「インポートしました」とメッセージ設定をしてますが、インポート件数も表示したいのですが、どうすればいいでしょうか。 どうぞよろしくお願い致します。
- 締切済み
- その他MS Office製品
- zero2012
- 回答数1
- アクセスでは、一つのアプリケーションに対して、一つ
エクセルは、一つのアプリケーション内で複数のブックを開くことが可能ですが、 アクセスでは、一つのアプリケーションに対して、一つのファイルしか開けないのでしょうか? ここで言う「ひとつのアプリケーション」と言うのは、 スタート→すべてのプログラム→Microsoft Office Excel 2007を押した事です。
- ベストアンサー
- オフィス系ソフト
- LGHLCXOZMC
- 回答数4
- Accessの内部結合
こんにちは。 Accessでcateテーブルとgoodsテーブルがあります。 select * from goods inner join cate on goods.cateid = cate.id; クエリデザインで、テーブルとテーブルを結合して上記のようなSQLができました。 これは動作することを確認しました。 SQLビューで下記のようなSQLを書きました。 select * from goods inner join cate on left(goods.cateid,5) = cate.id; しかしながら、動きませんでした。 VBAを使わずに、Accessの標準のクエリデザインから上記のようなSQLを実行させることは可能でしょうか? クエリデザインでselect left(cateid,5) as cateid from goodsというTESTクエリをつくり、TESTクエリとcateテーブルとジョインさせれば解決しそうなことはわかるのですが・・・ 宜しくお願いします。
- ベストアンサー
- その他MS Office製品
- mellow91
- 回答数3
- 作ったマクロが増えてきて、どう管理したらよいか
Excel2007を会社で使っていて、業務に小さなマクロを作って作業に利用しています 今まで何も考えずにPERSONAL.XLSB内にいくつもマクロを組んでいたのですが 最近どのマクロがいつ何のために作ったのかが把握できなくなってきました。 また、Publicで宣言した変数を関係ないSubプロシージャが読んでしまうという失敗もしてしまいました PERSONAL.XLSB 内でPublic変数を宣言すること自体良くなかったのでしょうか。 他にも「エクセルでマクロを表示すると全て表示されてしまうのでSubプロシージャを"Personal Sub"にすると良い」 と聞いたのでやってみたところユーザーフォームから呼び出せなくなってしまったり…… もう少しマクロ同士を分けて保存したり、管理したりするという方面の知識が必要だと感じています。 マクロの管理方法の常識、みたいなものはあるのでしょうか、 自分はほとんど自己流でやってきたのでその辺りの知識が全くありません。 手持ちの教科書や参考サイトには作り方は載っていても、マクロをどう整理して管理したらよいかというのはあまり見当たりません。 基本にするべき考え方や、参考になる書籍などをどなたかご紹介いただけないでしょうか。
- エクセル2000のショートカットメニューについて
エクセル2000のショートカットメニューについて とある本に記載があります。 (添付画像参照) 思うに 一番左のショートカットメニューは間違っていると思うのですがいかがでしょうか? 私としては 左端のショートカットメニューも 他の2つのショートカットメニューと同じだと思うのですが いかがでしょうか?
- ベストアンサー
- オフィス系ソフト
- nananana77
- 回答数2
- 数値型にしたい
品番と数量があるクエリがありこちらをテーブル作成する際に数値型にしたいです。 データ上 数量が四桁で710が0710となっています。 関数とか使うのでしょうか
- ベストアンサー
- その他MS Office製品
- h_toyo8888
- 回答数3
- VBAで分岐条件に名前をつける
If文の条件を外にだしさらに下記のようにIf文の中で論理演算を させるようなプログラムを作りたいにのですが、 ExxelVBAでそのようなことはできますでしょうか? できるとしたら教えてください。よろしくお願いします。 sub test() S1=36 S2=48 ’こういう名前の付け方はできないが、要はS1>0という条件に条件1と名づけたい。 条件1:=S1>0 条件2:=S2>0 IF 条件1*条件2=true then cells(1,1)=1 else if 条件1=true then cells(1,1)=2 else if 条件2=true then cells(1,1)=3 else cells(1,1)=0 end if end sub
- ベストアンサー
- オフィス系ソフト
- Kokorochaniuna
- 回答数2
- access 改ページコントロール
作成したフォームが縦長の為、マウスホイールでなんとか動かせないものかと調べてみたら 改ページコントロールを使ってマウスホイールを動かした時にフォーム内でページが変わるというVBをネットで見つけました 組み込んで使おうとおもったのですが、3頁以上は文章を変えないといけないとのこと http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1283883887 VBはさっぱり素人なのでどこをどうしたらいいのかわかりません わかられる方よろしくお願いします。 Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long) If Count > 0 Then DoCmd.GoToPage 2 Me![ページ2の先頭テキストボックス名].SetFocus Else DoCmd.GoToPage 1 Me![ページ1の先頭テキストボックス名].SetFocus End If End Sub ちなみにコレを組み込んでみたのですがエラーが出て動きませんでした。。。 頁番号が無いとエラー文にはかかれています。 (コマンド文自体は間違ってないようで、実際に動いている人はいる様です) 自分の環境が悪いのか。。。この問題もわかればよろしくお願いします。
- access 改ページコントロール
作成したフォームが縦長の為、マウスホイールでなんとか動かせないものかと調べてみたら 改ページコントロールを使ってマウスホイールを動かした時にフォーム内でページが変わるというVBをネットで見つけました 組み込んで使おうとおもったのですが、3頁以上は文章を変えないといけないとのこと http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1283883887 VBはさっぱり素人なのでどこをどうしたらいいのかわかりません わかられる方よろしくお願いします。 Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long) If Count > 0 Then DoCmd.GoToPage 2 Me![ページ2の先頭テキストボックス名].SetFocus Else DoCmd.GoToPage 1 Me![ページ1の先頭テキストボックス名].SetFocus End If End Sub ちなみにコレを組み込んでみたのですがエラーが出て動きませんでした。。。 頁番号が無いとエラー文にはかかれています。 (コマンド文自体は間違ってないようで、実際に動いている人はいる様です) 自分の環境が悪いのか。。。この問題もわかればよろしくお願いします。
- access 改ページコントロール
作成したフォームが縦長の為、マウスホイールでなんとか動かせないものかと調べてみたら 改ページコントロールを使ってマウスホイールを動かした時にフォーム内でページが変わるというVBをネットで見つけました 組み込んで使おうとおもったのですが、3頁以上は文章を変えないといけないとのこと http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1283883887 VBはさっぱり素人なのでどこをどうしたらいいのかわかりません わかられる方よろしくお願いします。 Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long) If Count > 0 Then DoCmd.GoToPage 2 Me![ページ2の先頭テキストボックス名].SetFocus Else DoCmd.GoToPage 1 Me![ページ1の先頭テキストボックス名].SetFocus End If End Sub ちなみにコレを組み込んでみたのですがエラーが出て動きませんでした。。。 頁番号が無いとエラー文にはかかれています。 (コマンド文自体は間違ってないようで、実際に動いている人はいる様です) 自分の環境が悪いのか。。。この問題もわかればよろしくお願いします。
- フィールド1だけのテキストボックスの幅を変える事は
フィールド1だけのテキストボックスの幅を変える事は出来ないのでしょうか? アクセス2007です。 テーブル1に ・ID オートナンバー型 ・フィールド1 テキスト型 ・フィールド2 テキスト型 を作り、 作成→その他フォーム→フォームウィザードで、フォームを作りました。 そして、デザインビューでテキストボックスのコントロールの幅を変えようと思うのですが フィールド1だけの幅を長くしたいのに ・ID ・フィールド1 ・フィールド2 の全てのテキストボックスが同じ長さになってしまいます。 「グループ化がされてるのかな?」と思い見てみましたが、されていません。 フィールド1を選択してF4を押して、プロパティシートを表示し、 幅を10にしたら、 ・ID ・フィールド1 ・フィールド2 全ての幅が10になってしまいました。 どうすれば、フィールド1だけのテキストボックスの幅を変える事が出来るのでしょうか? ご回答よろしくお願いします。
- Access計算式のフィールドの指定方法
Accessの問題集を解いてみているのですが、レポートの中で 計算式を作ってレポートビューにすると、 意図しないパラメータの入力画面が出てしまいます。 解答は書いてあるので、確かにそのようになるのは確認できたので すが、解説がなく何故そうなるのかご教授いただけないでしょうか。 <テーブル> 「取引先台帳」 フィールドにYes/No型の[会員]ほか [取引先コード][取引先名]など 「受注台帳」 [受注No][取引先コード][商品名][単価][個数]ほか <クエリ> 「受注一覧」 上記2つのテーブルを利用して作成 金額:[単価]*[個数] フィールドあり <レポート> 上記クエリを利用して作成 [取引先コード]でグループ化 [金額]フィールドをSum関数で合計し[subtotal]フィールドとして設定 [会員]フィールドはレポート上に入れていない このレポートの中で[会員]がONの取引先(コード)には、会員割引金額を表示する ため、IIF関数を使用し =IIf([会員],[subtotal]*0.05,0) とするとあります。 計算式をいつも式ビルダで作成している場合、[会員]フィールドが現在作成中の フィールド一覧にないため、基となるテーブルから[会員]フィールドを引っぱっ てきたら以下のように作成されます。 =IIf([取引先台帳]![会員],[subtotal]*0.05,0) で、これをレポートビューで表示すると、 「パラメータの入力」ダイアログボックスで「取引先台帳」とメッセージが なっているものが表示されます。何も入力せず「OK」をしても正しく計算できてません。 [取引先台帳]!を削除すれば、解答と同じになるため正しく計算してくれます。 クエリなどの計算式ではテーブル名が入っていても、正しく計算してくれるようでしたが、 この場合は、何故パラメータの入力メッセージが出てしまうのでしょうか。 長文になりましたが、よろしくお願いします。 情報が足りなければ、追加します。
- ベストアンサー
- その他MS Office製品
- libu
- 回答数2
- Access計算式のフィールドの指定方法
Accessの問題集を解いてみているのですが、レポートの中で 計算式を作ってレポートビューにすると、 意図しないパラメータの入力画面が出てしまいます。 解答は書いてあるので、確かにそのようになるのは確認できたので すが、解説がなく何故そうなるのかご教授いただけないでしょうか。 <テーブル> 「取引先台帳」 フィールドにYes/No型の[会員]ほか [取引先コード][取引先名]など 「受注台帳」 [受注No][取引先コード][商品名][単価][個数]ほか <クエリ> 「受注一覧」 上記2つのテーブルを利用して作成 金額:[単価]*[個数] フィールドあり <レポート> 上記クエリを利用して作成 [取引先コード]でグループ化 [金額]フィールドをSum関数で合計し[subtotal]フィールドとして設定 [会員]フィールドはレポート上に入れていない このレポートの中で[会員]がONの取引先(コード)には、会員割引金額を表示する ため、IIF関数を使用し =IIf([会員],[subtotal]*0.05,0) とするとあります。 計算式をいつも式ビルダで作成している場合、[会員]フィールドが現在作成中の フィールド一覧にないため、基となるテーブルから[会員]フィールドを引っぱっ てきたら以下のように作成されます。 =IIf([取引先台帳]![会員],[subtotal]*0.05,0) で、これをレポートビューで表示すると、 「パラメータの入力」ダイアログボックスで「取引先台帳」とメッセージが なっているものが表示されます。何も入力せず「OK」をしても正しく計算できてません。 [取引先台帳]!を削除すれば、解答と同じになるため正しく計算してくれます。 クエリなどの計算式ではテーブル名が入っていても、正しく計算してくれるようでしたが、 この場合は、何故パラメータの入力メッセージが出てしまうのでしょうか。 長文になりましたが、よろしくお願いします。 情報が足りなければ、追加します。
- ベストアンサー
- その他MS Office製品
- libu
- 回答数2
- ExcelVBAで非表示列を選択不可にしたい
ExcelVBAにおいて、非表示にしている列のみを選択できないようにしたいのですが、 どうすればよいのでしょうか? (Excel2007,Excel2010) よく非表示列(セル)をコピーしないように、手動で「可視セル」指定することはできますが、 そうではなく、シートの保護や非表示設定をVBA内でプログラムするように、 シートの選択の可不可も、プログラム内で行いたいのですが。 シートの保護で行うと、全ての列(セル)が選択不可になってしまい、困ります。 具体的には、VBA以下のことをします。 1.特定列を非表示にする。(この時、選択不可にしたい) 2.1の列を表示にする。(この時、選択可能にしたい) よろしくお願いします。 m(_ _)m
- ベストアンサー
- Visual Basic
- amamaq
- 回答数2
- VBA ボタンに登録すると挙動が変わってしまう
棒グラフの棒の部分の色を半自動で変えるマクロを作っているのですが 先日ようやくテストがうまくいったのでボタンに登録したところ VBエディタ上ではきちんと動いていたものがうまく動かなくなってしまいました マクロgraphItemColorChange(グラフの色を変える)を3回呼び出すマクロで 1回目と2回目で「こんな色に変えますよ」というサンプルを2つ表示し 使う人間が選んだ方の色でグラフ「c」の色を変更するという動作をさせているつもりです VBエディタ上で[f5]を押して動かした時にはきちんと動作するのですが ボタンに登録した途端にサンプル二つが表示されなくなってしまいました 不要になったサンプルを削除する部分をコメントアウトすると 呼び出し先や呼び出し元も含めて全ての処理が終わった後にサンプル二つが画面上に表れるので 画面にリアルタイム(?)で表示されるかどうかの違いなのだと思うのですが これをなんとかする方法が見当つきません どなたか、なぜ挙動が違ってしまうのかや対処方法等ご存じの方いらっしゃいませんでしょうか 環境はExcel2007 ボタンはクイックアクセスツールバーにExcelのオプション→ユーザー設定→コマンドの選択→マクロ にこのマクロの呼び出し元になるマクロを登録しています また、このマクロ自体を同じ方法で直接ボタンに登録してもサンプルのグラフは表示されませんでした ----------マクロ----------- Sub callGraphItemColorChange() Dim c As Integer c = 1 ' 色を変えるグラフの番号、実際にはこの値は呼び出し元のマクロからもらう Dim a, f As Integer, i As Long Dim LPosition As Long Dim myChart Dim sample1 As Long, sample2 As Long Set myChart = ActiveSheet.ChartObjects(c) LPosition = myChart.Left Application.Goto Reference:=Range(myChart.TopLeftCell.Address), Scroll:=True With myChart.Duplicate .Left = LPosition + myChart.Width .Top = myChart.Top f = 1 sample1 = ActiveSheet.ChartObjects.Count ' Call graphItemColorChange(sample1, f) 'サンプル1の色で色変え用マクロを呼び出す .Chart.ChartArea.Border.ColorIndex = 3 .Chart.ChartArea.Border.Weight = xlThick End With With myChart.Duplicate .Left = LPosition .Top = myChart.Top + myChart.Height f = 2 sample2 = ActiveSheet.ChartObjects.Count ' Call graphItemColorChange(sample2, f) 'サンプル1の色で色変え用マクロを呼び出す .Chart.ChartArea.Border.ColorIndex = 5 .Chart.ChartArea.Border.Weight = xlThick End With a = MsgBox("マクロ使用後に[戻る]で使用前には戻れません" & vbCrLf _ & "なるべく一度保存してから使用してください" & vbCrLf _ & " (一旦戻って保存するなら[キャンセル])" & vbCrLf _ & vbCrLf _ & "下の色(青枠)に塗り替えようとしています" & vbCrLf _ & "下のものでいいなら[はい(Y)]" & vbCrLf _ & "右のもの(赤枠)なら[いいえ(N)]" & vbCrLf _ & "中止するなら[キャンセル]", vbYesNoCancel) Debug.Print sample1 Debug.Print sample2 Debug.Print c ActiveSheet.ChartObjects(sample2).Delete ActiveSheet.ChartObjects(sample1).Delete If a = vbYes Then f = 2 ElseIf a = vbNo Then f = 1 Else Exit Sub End If ' Call graphItemColorChange(c, f) '選んだ方の色で色変え用マクロを呼び出す End Sub
- VBE オブジェクト名について 「ACCESS9」
アクセス2003を使っています。 ・支払管理.mdb ・在庫管理.mdb があります。 支払管理.mdbのvbe画面を見ると プロジェクトエクスプローラーの一番上には 「支払管理(支払管理)」と表示されますが、 在庫管理.mdbではなぜか 「ACCESS9(在庫管理)」と表示させてます。 これはなぜでしょうか?
- ACCESS フォームの操作
下記のようなことが可能であれば、方法をご教授願います。 まず、構造 フォーム2つ 1.メニュー…コマンドボタン2つ(BT11とBT12) 2.メイン …コマンドボタン3つ(BT21とBT22とBT23) やりたいことは、 BT11とBT12のクリックイベントでどちらもメインフォームを表示 ただし、 BT11クリック時はacFormAddでメインフォーム上にBT21、BT23だけを表示し、 BT12クリック時はacReadOnlyメインフォーム上にBT22、BT23だけを表示 です。 フォームの表示は出来ましたが、 コマンドボタンの表示/非表示が切り替わりません。 sub BT11_Click() 1行目 DoCmd.OpenForm "フォーム名", acNormal, , acFormAdd, acDialog 2行目 Forms!メインフォーム!BT21.Visible = True end sub BT11をクリックしたときは、1行目でとまっているようです。 メインフォームを閉じるときに2行目を実行しようと するようで、メインフォームがないというエラーがでます。 宜しくお願い致します。
- ベストアンサー
- その他(データベース)
- aki_like
- 回答数2
- エクセルに入力した文字でアクセスにフィルタをかける
ADOどころかVBAもよくわかっていない初心者です。 顧客情報DBというアクセスのファイルのテーブル「tb顧客」に フィルターをかけてフィールド「会社名カナ」に「カブシキ」が入っている データのみをエクセルに張り付けています。 以下でうまく動くのですが、本当は「*カブシキ*」のところをエクセルで入力した任意の言葉 (Cells(5,3)に入力された文字)をワイルドカードで挟んで実行させたいです。 変数を使ったり、そのままCells(5,3).valueを入れたり、と試してみたのですが うまくいきません。 正しい書き方がお分かりになる方、よろしくお願いします。 Sub 検索_顧客() Set myCon = New ADODB.Connection myCon.Provider = "Microsoft.Ace.OLEDB.12.0" myCon.Open "C:\Users\Desktop\顧客情報DB.accdb" Set myRS = New ADODB.Recordset If Cells(5, 3).Value <> "" Then With myRS .Open "tb顧客", myCon, adOpenDynamic, adLockOptimistic .Filter = "会社名カナ like '*カブシキ*'" End With End If Range("D9").CopyFromRecordset myRS
- ベストアンサー
- Visual Basic
- noname#199790
- 回答数3