• 締切済み

アクセス For Eachの時点 絞る

UJQBKITECHXNWの回答

回答No.1

多分不可能です

関連するQ&A

  • For Each  すべてループされない?アクセス

    For Each ctl In Forms(FormName).Controls Debug.Print ctl.Name If ctl.ControlType = acTextBox Then If ctl.Name Like "削除*" Then DeleteControl FormName, ctl.Name End If End If Next ctl こういうループの仕方は、完全型ではないのでしょうか? フォーム上に「削除」で始まるテキストボックスをすべて削除したいのですが 例えば4個あれば、2個のコントロールしか削除されません。 コントロールを削除することにより、インデックスが狂うのでしょうか?

  • コントロールタイプを絞ってループしたい

    アクセスのフォーム上のコントロールをループする際に テキストボックスだけ絞ってループしたいのですが Sub Sample() Dim myFormName As String Dim ctl As Control myFormName = "フォーム1" For Each ctl In Forms(myFormName).Controls If ctl.ControlType = acTextBox Then End If Next ctl End Sub これだとテキストボックスの量が多くて、2秒くらいかかるのですが For Each ctl In Forms(myFormName).Controls この時点で、テキストボックスだけ絞る方法はありますか? For Each ctl In Forms(myFormName).ControlType(acTextBox) こうするとエラーになりました。 ご教授よろしくお願いします。

  • VBAでタブのページを削除するには?アクセスです

    フォームにタブコントロールを置いて、ページを6つにして、コマンドボタンを置きました。 3から6ページをVBAで削除する事は可能でしょうか? (1・2は残したいです) 「ページを削除する」というVBAコードがわかりません。 Private Sub コマンド7_Click() Dim ctl As Control For Each ctl In Forms(Me.Name).Controls If ctl.ControlType = acPage Then Debug.Print ctl.Name 'ここでページを削除したい End If Next ctl End Sub あと、もしかしてデザインビューでないと削除できないですか? であれば、DoCmd.OpenForm Me.Name, acDesign を追加しようと思っています。 ご回答よろしくお願いします。

  • コントロールを削除すると、一つ飛ぶ アクセス

    こんばんは。よろしくお願いします。 フォーム上のイメージを削除してるのですが Sub test() Dim ctl As Control Dim FormName As String FormName = "フォーム2" DoCmd.OpenForm FormName, acDesign For Each ctl In Forms(FormName).Controls If ctl.Name Like "イメージ*" Then Debug.Print ctl.Name DeleteControl FormName, ctl.Name End If Next ctl End Sub これをすると、コントロールが一つ飛ばされます。 イミディエイトウインドウで値を確認すると イメージ0 イメージ2 イメージ4 になりました。 1、3、5が飛ばされました。 実行結果は画像のような感じです。 なぜ飛ばされちゃうのでしょうか? 普段、For Each ctl In Forms(FormName).Controlsを使う分には値が飛ばされる事はないので DeleteControl FormName, ctl.Nameが原因だと思うのですが、 全ての「イメージ」で始まるコントロールを削除したい場合、どうすえばいいですか?

  • セルに対してFor Each~In~Nextを使う

    セルに対してFor Each~In~Nextを使う事は出来ない? シートやブックに対してループする時は Sub aaa() Dim w As Worksheet For Each w In Worksheets MsgBox w.Name Next End Sub 等を使いますが、 A1に「あ」 A2に「い」 A3に「う」 が入っている場合、 Sub bbb() Dim i As Long For i = 1 To Range("a65536").End(xlUp).Row MsgBox Cells(i, 1) Next End Sub で、全ての値を取得できますが、 For~to~nextではなく セルに対してFor Each~In~Nextを使う方法があれば教えてください。 上記のように Dim w As Worksheetは宣言できますが Dim c As Workcellとはできませんでした。 なぜわざわざFor~to~nextでできる事をFor Each~In~Nextでやりたいかと言うと、 シートやブックはFor~to~nextでできるのに、セルはFor~to~nextができない理由を知りたいからです。 ご回答よろしくお願いします。

  • なぜかエラーになる

    アクセス2003です。 フォーム1が存在しています。 VBAの標準モジュールで ++++++++++++++++++++++++++++ Sub try1() DoCmd.OpenForm "フォーム1" End Sub ++++++++++++++++++++++++++++ をしたら問題なくフォームが開くのですが ++++++++++++++++++++++++++++ Sub try2() Dim MyFormName As String Dim ctl As Control MyFormName = "フォーム1" For Each ctl In Forms(MyFormName).Controls Debug.Print ctl.Name Next ctl End Sub ++++++++++++++++++++++++++++ をすると、 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 実行時エラー ‘2450’: マクロの式または、VisualBasicコードで参照されている‘フォーム1’フォームが見つかりません。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ となります。 再起動しても同ですが、 他のmdbファイルなら try2のコードで正常にコントロール名を取得できます。 このMDBファイルに問題があると思うのですが try1がOKでtry2がダメな理由がわかりません。

  • 全てのコマンドボタンの名前を変更したい

    先日質問した「オブジェクト(コントロール)の名前を変更したい」 http://okwave.jp/qa/q7896863.html?by=datetime&order=DESC の応用で、 前回はDexMachina様にご回答いただいて解決したのですが今度は違う部分で詰みました。 フォームに乗っかっているコマンドボタンの名前を変更しつつ、 インデックスを付けていこうと思うのですが ************************************** Sub オブジェクト名変更() Dim ctl As Control Dim i As Long Dim f As String f = "フォーム1" i = 1 DoCmd.OpenForm f, acDesign 'デザインビューで開く For Each ctl In Forms(f).Controls If ctl.ControlType = acCommandButton Then Forms(f)!Controls(ctl.Name).Caption = i Forms(f)!Controls(ctl.Name).Name = i End If Next ctl DoCmd.Close acForm, "フォーム1", acSaveYes '保存する End Sub ************************************** のControls(ctl.Name).でエラーになります。 エラー内容は 実行時エラー2465 指定した式で参照されている’ Controls’フィールドが見つかりません。 です。 イミディエイトで?ctl.Nameして見ると コマンド0となるので問題ないと思うのですが文法がおかしいのでしょうか? Forms(f)!コマンド0.Caption にすると問題なく動作します。 ご回答よろしくお願いします。

  • Excel VBA のFor Each ・・・ Next について

    配列に数字(特段数字でなくても)入れたいのですが、以下のように書きました。 Sub test() Dim x As Variant Dim m(1 To 10) As Integer For Each x In m x.Value = 100 Next Stop End Sub Stopでとめてmを確認するとすべて0です。どうしてなのでしょうか。 配列ではなく Sub test() Dim x As Variant For Each x In range("a1:a10") x.Value = 100 Next End Sub とするとA1:A10には100が入ります。 この差がいまいちわからなくて、 もちろんFor ・・・ Nextで簡単に入れられるのは承知しています。 補足ですが また最初はx.valueの.valueをつけていなかったのでセルにも反映されませんでしたが.valueをつけると入りました。

  • フォーム1が開いているのならMsgBoxを表示

    Sub マクロ() If フォーム1が開いているのなら Then MsgBox "フォーム1は開いています" End If End Sub アクセスで上記の事をやりたいのですが、コードを教えていただけますか? Sub test() Dim myForm As Form For Each myForm In Forms Debug.Print myForm.Name Next End Sub で、フォームをループできるのですが、いちいちループさせずに、フォーム1だけをつかんで、 起動している(開いている)ならメッセージボックスを表示させたいです。

  • ページに乗っているコントロールの一覧を取得するコー

    タブコントロールのページに乗っているコントロールの一覧を取得するコードを教えてください。 あくせすです。 1ページ目には、コマンドボタン、テキストボックスが乗っています。 それを取得したいです。 2ページ目には違うコントロールが乗っています。 2ページ目のコントロールは取得したくないです。 http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200911/09110001.txt を参考に、 Sub test() For Each tabctl As TabPage In TabControl1.TabPages For Each ctl As Object In tabctl.Controls If ctl.Name.toString.IndexOf("TextBox") > -1 Then Dim tb As TextBox tb = DirectCast(ctl, TextBox) End If Next Next End Sub にしましたが構文エラーになってしまいました。 VB.NETのコードだからですよね。 VBAのコードをご教授いただけますか。よろしくお願いします。