ACCESSでCaption実行時エラーになる

このQ&Aのポイント
  • ACCESS2010 VBAで予定表カレンダーを作成している際、フォームのテキストボックスに日付を代入する際にエラーが発生します。
  • visibleは正常に動作しているため、入力ミスはないと考えられますが、エラーの原因がわかりません。
  • 解決策を教えてください。
回答を見る
  • ベストアンサー

ACCESS でCaption実行時エラーになる

ACCESS2010 VBA にて予定表カレンダーを作成しているのですが フォームのテキストボックス(L0~L36)に日付を代入する際 captionの行のところで エラー483 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 が発生してしまいます。 visibleは動作しているので入力ミスはないとおもうのですが 原因がまったくわかりません。解決策を教えてください。 Set F = Forms![予定表カレンダー] For i = 0 To 36 '曜日数値以下または月の最後の日を超えたなら表示は消す If i < fday Or i > iend Then F(i).Visible = False Else F(i).Caption = dd F(i).Visible = True dd = dd + 1 rstproduct.MoveNext End If

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

テキストボックスにCaptionというプロパティは無いですよ。

CLOOTE
質問者

お礼

ありがとございます。 ラベルに変更したらできました

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

F(i)はテキストボックスですか、ひょっとしてテキストボックスに 付随するラベルへデータを表示するつもりではないですか。 質問の内容からするとテキストボックスを作成したときに自動的に 作成されるラベルに日付を入れようとしているように思われますが。 このラベルはオブジェクトとしてはテキストボックスとは独立して いるので(もちろん連動はしていますが)、テキストボックスの 名前ではなくラベルの名前に対ししてアプローチする必要があります。 もちろん、ラベルにはCaptionというプロパティはあります。

関連するQ&A

  • Access-フォームのCaption変更

    お願い致します。 Access97のフォームのクラスモジュールでCaptionの変更を行うコードを書いたのですが、いまいちうまくいきません。 ご指導お願い致します。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ *********************************************** Private sub Form_Load() DoCmd.OpenForm "F_OPEN" Forms!F_OPEN!Msg.Caption="お待ちください" ************************************************ このForms!F_OPEN!Msg.Caption="お待ちください" のところで、エラーメッセージ 「'Item'メソッドは失敗しました:'Forms'オブジェクト」がでてしまうのです。 お願い致します。

  • 実行時エラー

    先日はご回答いただきありがとうございました。 ご回答いただいた構文を採用してテストしてみましたところ、特定の操作時にエラーが発生してしまいました。 発生条件:「管理」部署のユーザー・シート3人と「総務」部署のユーザー・シート2人を用意      「管理」の管理職でログインしたあと、「総務」の管理職でログインを試みるとエラーが発生 発生エラー:実行時エラー'1004' 'Visible' メソッドは失敗しました: '_Worksheet' オブジェクト エラー発生箇所:ws.Visible = False(下から4行目) お手すきの時で構いませんので、宜しければご回答お願いいたします。 ElseIf isManage Then '管理職なら Dim i As Integer For i = 1 To login.Cells(Rows.Count, eColIndex.depcode).End(xlUp).Row On Error Resume Next 'エラートラップ開始 Set ws = Sheets(login.Cells(i, eColIndex.name).Value) 'Sheets("氏名") On Error GoTo 0 'エラートラップ終了 If login.Cells(i, eColIndex.depcode).Value = depcode Then If ws Is Nothing Then 'シートが無いなら MsgBox "ユーザーシートがありません", vbExclamation, "警告" Application.Visible = True 'ブックを表示 End End If ws.Visible = True 'ユーザーのシート表示 Set ws = Nothing ElseIf Not ws Is Nothing Then ws.Visible = False Set ws = Nothing End If Next

  • 実行時エラー91について

    vbでエクセルにデータを入力したあと、2つのシートを選択し、 その後に両面印刷を行うプログラムを作成中ですが、 印刷の段階で 「実行時エラー91。オブジェクト変数または with ブロック変数が設定されていません。」 とのエラーがでます。 どの部分がおかしいのかわからないので教えて下さい。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlSheet2 As Excel.Worksheet Dim xlFile As String xlFile = App.Path & "表.xls" Dim MyFile As String MyFile = Dir$("表.xls") If Len(MyFile) > 1 Then Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(xlFile) Set xlSheet = xlBook.Worksheets("裏") Set xlSheet2 = xlBook.Worksheets("表") xlApp.Visible = True a1 = Label47.Caption a1 = Format(a1, "#,#") a2 = Label48.Caption m = a1 & "及び" & a2 & "とする。" For k = 1 To 18 s = Mid(m, k, 1) i = 8 + (k - 1) * 2 xlSheet.Cells(40, i).Value = s Next k Set xlSheet2 = xlBook.Worksheets("表") xlSheet2.Cells(4, 2).Value = Text11.Text xlSheet2.Cells(4, 10).Value = Text12.Text xlSheet2.Cells(4, 19).Value = Text13.Text xlBook.Sheets(Array("表", "裏")).Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ←ここでエラー Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing Set xlSheet2 = Nothing

  • access 2003 コマンドボタンのEnabledイベントについて

    いつもお世話になっています。 どなたかわかる方アドバイスいただけないでしょうか? 現在、会社の勤務表をaccess2003にて作成しています。 勤務状況を保存する勤務表テーブルと入力用コントロールが 複数あるフォーム1フォームがあります。 出社時間や退社時間、作業内容を入力し登録コマンドボタンの イベントで入力内容を勤務表テーブルに入力し、同時に その月1ヶ月分の勤務状況をフォーム1フォーム上のリストボックス に表示させています。 今回は 表示している1カ月分の勤務に対して前月、翌月の勤務を表示する コマンドボタンを作成しました。 前月は問題なくできたのですが、翌月に関してはシステム時間に 対して未来の月に関しては表示させない(コマンドボタンを使用不可 にする制限をつけ)ようとしているのですが、できません。 翌月コマンドボタンのイベントで未来の月を表示させようとした時に 使用不可にしようとしても翌月コマンドボタンのイベントで 翌月コマンドボタンを使用不可にはできないみたいですし、 どうにもこまっています。 なにかいい案ありませんでしょうか?どなたかお願いします。 ちなみに翌月ボタンに関するコードです。 '翌月ボタンに関するイベント Private Sub コマンド89_Click() DoCmd.SetWarnings False Dim yokugetucount Dim yokugetu yokugetucount = DCount("*", "勤務表", "[ユーザー名] = [Forms]![フォーム1]![コンボ56] AND [日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)") If yokugetucount > 0 Then Me!リスト76.RowSourceType = "Table/Query" Me!リスト76.RowSource = "select id,format([日付],'mm/dd'),曜日,出社,出社属性,退社,退社属性,作業時間,作業内容 from 勤務表 where [ユーザー名] = [forms]![フォーム1]![コンボ56] and ([日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)) ORDER BY 日付;" Else yokugetu = Format(DateSerial(Year(Calendar6), Month(Calendar6) + 1, 1), "yyyy/mm") Select Case Right(yokugetu, 2) Case 1, 3, 5, 7, 8, 10, 12 X = 31 Case 4, 6, 9, 11 X = 30 Case 2 If IsDate(yokugetu & "/29") = True Then X = 29 Else X = 28 End If End Select For C = 1 To X Work1 = yokugetu & "/" & Right("00" & C, 2) Work2 = Format(yokugetu & "/" & Right("00" & C, 2), "aaa") kakunin = DCount("*", "勤務表", "[ユーザー名] = [Forms]![フォーム1]![コンボ56] AND 日付 = #" & Work1 & "#") If (kakunin = 0) And (Me!コンボ56 <> "") Then DoCmd.RunSQL "Insert into 勤務表(ユーザー名,日付,曜日) values ([forms]![フォーム1]![コンボ56],#" & Work1 & "#,'" & Work2 & "')" End If Next End If Me!リスト76.RowSourceType = "Table/Query" Me!リスト76.RowSource = "select id,format([日付],'mm/dd'),曜日,出社,出社属性,退社,退社属性,作業時間,作業内容 from 勤務表 where [ユーザー名] = [forms]![フォーム1]![コンボ56] and ([日付] >= DateSerial(Year(calendar6),Month(calendar6)+1,1) and [日付] < Dateserial(Year(calendar6),Month(calendar6)+2,1)) ORDER BY 日付;" Calendar6 = DateSerial(Year(Calendar6), Month(Calendar6) + 1, 1) テキスト88 = Calendar6 DoCmd.SetWarnings True End Sub 前月ボタンはEnd Subの前に If DateSerial(Year(Calendar6), Month(Calendar6) + 1, Day(Calendar6)) > DateSerial(Year(Date), Month(Date), Day(Date)) Then コマンド89.Enabled = False Else コマンド89.Enabled = True End If を入れる事でやりたい事ができました。

  • Excel2007 VBA ラジオボタン Caption

    動的に生成したActiveXコントロールのOptionButtonのプロパティを設定しようと考えています。 For i = StRow To EdRow Step 1 Sheet.Cells(i, Col).Select Left = ActiveCell.Left Top = ActiveCell.Top Width = ActiveCell.Width Height = ActiveCell.Height Set Page = Sheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", _ Left:=Left, _ Top:=Top, _ Width:=Width, _ Height:=Height) Page.Name = "Opt" + CStr(i) Page.GroupName = "選択" Page.Caption = "" Next i Nameプロパティは正常に設定できるのですが、GroupNameとCaptionでエラーになってしまいます。 エラー'438' オブジェクトはこのプロパティまたはメソッドをサポートしていません。 となります。 VisualBasicのヘルプよりOptionButtonのプロパティとしては存在しているので、なぜサポートしていないといわれるのかがわかりません。 どのようにすれば設定可能でしょうか。

  • VLOOKUP関数で、検索値の移動

    まねっこで関数を覚えたものです。 エクセルのシートに一年間の「予定表」を作りました。 A4~A65に1月の日にちが、B4~B65に曜日が、C4~C65は予定表の書き込み欄です。予定表は1行では書ききれないこともあり、2行にしました。 D4~D65に同じように2月の予定表を、G4~G65に3月と展開してあります。 新しく「カレンダー」というシートを作り、B7~H7に「曜日」、B8~H8に「日にち」、B10~H10に「予定表」に記載した文言を入れますから、下のように設定しました。 H10=VLOOKUP(カレンダー!H8,予定表!G4:I65,3,FALSE) これは3月を設定したものです。今年の3月1日は土曜日なので、H8となります。 ここから質問です。 カレンダーシートは1枚しかありません。B2に「年」、D2に「月」を入れると、日付、曜日が変わるようにしてあります。 たとえばD2を4月とすると、H10の文言が消えます。予定表!G4:I65と設定してあるので当たり前ですが。 これを月が変わったら、G4:I65 もその月に会うようにするにはどうすればいいのでしょうか。 「カレンダー」のD2に「1」と入れたら、A4:C65 としたいのです。 よろしくお願いします。

  • アクセス2003のサブフォームコントロールの参照について

    アクセス2003で質問です。 メインフォームM1 サブフォームS1 サブフォームコントロールSCTL1 S1のフィールド T1と定義している場合に T1へサブフォームS1からオープンした別のフォームF1の値を代入したいのです。 マクロで値の代入の式を アイテムに [Forms]![M1]![SCTL1]![T1] と記述してもプロパティまたはメソッドが正しくないというエラーが表示されます。 同じ記述でアクセス2000では出来ました。 どこが違うのか教えて下さい。

  • ACCESS97 サブフォームのレコードソースプロパティーを変更したい。

    フォームの中にサブフォーム(データシート)が1つあります。 元のフォームのチェックボックスのオン・オフでサブフォームのレコードソースプロパティーを変更すると、 実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません。がでます。 サブフォームのビューは変更したくありません。 だれか助けてください。 If Me.未送信のみ = -1 Then Forms!F_処理選択!F_理選択サブ.RecordSource = "F_処理選択サブ_1" Else Forms!F_処理選択!F_処理選択サブ.RecordSource = "F_処理選択サブ_2" End If

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

    先日質問した「オブジェクト(コントロール)の名前を変更したい」 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 にすると問題なく動作します。 ご回答よろしくお願いします。

  • フォームモジュールだとエラーになる理由は?

    http://okwave.jp/qa/q7837097.html でも質問した者ですが別の事がやりたくなってきちゃいました。 と言うのは、 ページのインデックスと同じ番号をページ名とページの表題に設定したいと思いました。 フォームにタブ0を置き、ページを5つくらいにしました。 その際、ページインデックスが0の時にページの名前はページ1になり、 ページインデックスが1の時にページの名前はページ2になり・・・ とひとつずつずれてるのを前回の質問で学習しました。 そしてさらにコマンドボタンを置いてそのコマンドボタンを押下すると ページインデックスの値を ページ名とページの表題に設定するVBAコードを作ったのですがエラーになってしまいます。 フォームモジュールに ********************************************************** Private Sub コマンド_Click() 'SetFocusメソッドはデザインビューでは使えない Dim ctl As Control Dim i As Long DoCmd.OpenForm "フォーム1", acDesign For Each ctl In Forms("フォーム1").Controls If ctl.ControlType = acPage Then Forms("フォーム1").タブ0.Pages(i).Name = "ページ" & i Forms("フォーム1").タブ0.Pages(i).Caption = i i = i + 1 End If Next ctl End Sub ********************************************************** としました。 これを実行すると Forms("フォーム1").タブ0.Pages(i).Name = "ページ" & i の部分で 実行時エラー 29054 「指定のコントロールを追加 名前の変更 または削除することはできません」 となります。 終了(E)しか選択できない状態でデバッグ(D)は選択できないです。 でも、これと全く同じコードを標準モジュールに貼り付けて実行すると問題なく動きます。 なぜフォームモジュールだとエラーになるのでしょうか? 2003でも2007でもエラーになります。 ご回答よろしくお願いします。

専門家に質問してみよう