• 締切済み

Access エラー解除方法?

AccessのVBAにて 前任者が作成したプログラムの変更を行っているのですが、コンボボックスから色を指定して印刷時にエクセルのセルを 塗りつぶすプログラム Public Function chgExcelColorCode(ByVal ColorNo As String) As Long On Error GoTo chgExcelColorCodeErr chgExcelColorCode = 2 Select Case ColorNo Case "" chgExcelColorCode = 2 Case "白色" chgExcelColorCode = 2 Case "水色" chgExcelColorCode = 34 Case "黄色" chgExcelColorCode = 36 Case "緑色" chgExcelColorCode = 35 Case "紫色" chgExcelColorCode = 39 Case "ピンク色" chgExcelColorCode = 38 Case "オレンジ色" chgExcelColorCode = 40 Case "イエロー" chgExcelColorCode = 6 Case "ライトブルー" chgExcelColorCode = 20 Case "Lグリーン" chgExcelColorCode = 4 End Select chgExcelColorCodeExit: Exit Function chgExcelColorCodeErr: Call S_Err("chgExcelColorCode", Err) GoTo chgExcelColorCodeExit End Function 以上でイエロー、ライトブルー、Lグリーンを追加したのですが Lグリーンのみうまく登録できません。 指定するコンボボックスの値集合ソースは増やしているのですが エラー内容は -2147217833 指定されたデーター量がフィールドサイズを超えています。データー量を減らし、挿入または貼り付けを行ってください。 モジュール名InsertData 以上のようになります。 何を修正すればエラー解除できるのでしょうか?

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

そもそも、 色選択テーブル 色番号 Integer 色名 String 色番号    色名 4     Lグリーン 20    ライトブルー ・・・・・・・・・ というデータが入っていれば、 このテーブルをコンボボックスの値集合ソースにして 連結列を1(色番号)にしておけば chgExcelColorCode 自体が不要に思えるんですけど? 全体の流れが分からないので外しているかもしれませんが・・

関連するQ&A

  • Accessエラー処理

    前任者が作成したAccess VBAにて作成したプログラム コンボボックス内の項目を追加処理し 登録ボタンにて登録しようとすると -2147217833 指定されたデーター量がフィールドサイズを超えています。データー量を減らし、 挿入または貼り付けを行ってください。 モジュール名 InsertData 以上のようなエラーが出ます。 行っているプログラムはコンボボックスにて選択された色名(ライトグリーン)にエクセルのカラーコード(43)を指定して 指定したエクセルのセルをこの色で塗りつぶす作業です。 説明が足りないかと思いますが、わかる限り 教えていただけないでしょうか?

  • Access VBAで行ラベルが定義されていないというエラーが出ます

    VBA初心者です。 下記のソースで行ラベルを定義しているつもりなのですが、 なぜか行ラベルが定義されていませんというコンパイルエラーがでます。 よろしくお願いします。 Private Sub cmd_Click() On Error GoTo Err_cmd_Click <---ここ Dim inp As String Dim cnt As Integer inp = Forms![フォーム1]![日付] 'フォームの非連結テキストボックスと連動 For cnt = 1 To 31 'インポート・フルパス名作成 If (cnt) < 9 Then strImportFileNameM = "M:\PdxLog\KabeKaKinA" & inp & "0" & cnt + 1 & ".csv" DoCmd.TransferText acImportDelim, , "KabeDownLoad", strImportFileNameM, False Else strImportFileNameM = "M:\PdxLog\KabeKaKinA" & inp & cnt + 1 & ".csv" DoCmd.TransferText acImportDelim, , "KabeDownLoad", strImportFileNameM, False End If Next cnt '正常終了 Exit_cmd_Click: End Sub 'エラー処理 Err_cmd_Click: Beep Select Case Err.Number Case Else MsgBox Err.Number & ":" & Err.Description End Select Resume Next End Sub

  • access VBAでのファイル読み込みとその保存方法

    昨日も質問させていただいたVBA初心者です。 いろいろ調べましたが解決しなかったので、 またまた質問させていただきます。 ファイルを読み込んで、それを別ファイルに保存したいのですが、 下記ですと、1行のみ保存されるだけでした。 この方法ですと、すべて保存されるはずと書かれていたのですが。 全くどこが悪いのか分かりません、よろしくお願いします。 Private Sub cmd_Click() On Error GoTo Err_cmd_Click Dim ReadFileName As String Dim Contents As String Dim WriteFileName As String ReadFileName = "P:\dl_engine\logs1\service\20020223" ' ファイルを読み込む Open ReadFileName For Input As #1 Input #1, Contents Close #1 WriteFileName = "C:\Contents\data\Melody.csv" ' ファイルに保存 Open WriteFileName For Output As #2 Write #2, Contents Close #2 '正常終了 Exit_cmd_Click: Exit Sub 'エラー処理 Err_cmd_Click: Beep Select Case Err.Number Case Else MsgBox Err.Number & ":" & Err.Description End Select Resume Next End Sub

  • 二つのエラーを発生させたい

    ひとつのプロシージャー内で、 二つのエラートラップを仕掛ける事は出来ないのでしょうか? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description On Error GoTo Err2 i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub を行うと、 i = "b" で2回目のエラーが発生した時は、 実行時エラーになってしまいます。 i = "b" で2回目のエラーが発生した時に、 「Err2のエラー: 型が一致しません。」 と表示させるにはどうすればいいでしょう? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 On Error GoTo Err2 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub にすると、 i = "a" のエラーで、 「Err2のエラー: 型が一致しません。」 へ移動してしまいます。

  • Access97で「パラメータが少なすぎる」のエラーとは?

    Win98SE、VB6.0+SP3からAccess97のmdbを読んで処理するプログラムで、 On Error GoTo Err_Hndr Set db = OpenDatabase(sDatabase) sSQL = "select * from station WHERE compare.[stationNo] = 1;" Set rs = db.OpenRecordset(sSQL, dbOpenSnapshot) このSet rs文のあと、エラールーチンに飛んでしまいます。 エラーコードは3061(パラメータが少なすぎます。1を指定して下さい) です。 このエラーはどういう意味で、どうやって解決すればいいのでしょうか?

  • EXCEL2000 VBA でエラートラップできません。

    次のスクリプトで”Select Case Workbooks(saki).Worksheets(z).Name”のところで変数zに存在しないワークシートのインデックスが入った時にはエラーが出るので、On Erroe Goto で回避しようと思うのですができません(そのままマクロが止まってしまう)。 なぜ回避できないのか教えてください。 また回避するいい方法があれば教えてください。 Private Sub UserForm_Activate() moto = Cells(2, 5) saki = Cells(1, 5) For z = 1 To 50 On Error GoTo e0 Select Case Workbooks(moto).Worksheets(z).Name Case "検索" Case "結果" Case "エフ" Case "ツール" Case "記憶" Case Else On Error GoTo e0 UserForm3.ComboBox1.AddItem Workbooks(moto).Worksheets(z).Name End Select Next e0: For z = 1 To 50 On Error GoTo e1 Select Case Workbooks(saki).Worksheets(z).Name    ’ここでエラーが出る(実行時エラー'9' インデックスが有効範囲にありません) Case "検索" Case "結果" Case "エフ" Case "ツール" Case "記憶" Case Else On Error GoTo e1 UserForm3.ComboBox2.AddItem Workbooks(saki).Worksheets(z).Name End Select Next e1: End Sub

  • access vba 構文の解読

    access vba 構文の解読 はじめまして先ほどaccess2003について質問させていただいたものです。以下の構文が先ほどの続きです。こちらも皆様のお力で構文を解読していただけないでしょうか。 すみません解読とは、構文の一行一行が何を示しているのか教えていただけると助かります。 よろしくお願いいたします。 ' Exit the application. Case conCmdExitApplication CloseCurrentDatabase ' Run a macro. Case conCmdRunMacro DoCmd.RunMacro rs![Argument] ' Run code. Case conCmdRunCode Application.Run rs![Argument] ' Open a Data Access Page Case conCmdOpenPage DoCmd.OpenDataAccessPage rs![Argument] ' Any other command is unrecognized. Case Else MsgBox "不明なオプションです。" End Select ' Close the recordset and the database. rs.Close HandleButtonClick_Exit: On Error Resume Next Set rs = Nothing Set con = Nothing Exit Function HandleButtonClick_Err: ' If the action was cancelled by the user for ' some reason, don't display an error message. ' Instead, resume on the next line. If (Err = conErrDoCmdCancelled) Then Resume Next Else MsgBox "コマンド実行中のエラーです。", vbCritical Resume HandleButtonClick_Exit End If End Function Private Sub メニュー終了_Click() On Error GoTo Err_メニュー終了_Click DoCmd.Close Exit_メニュー終了_Click: Exit Sub Err_メニュー終了_Click: MsgBox Err.Description Resume Exit_メニュー終了_Click End Sub Private Sub 終了_Click() On Error GoTo Err_終了_Click DoCmd.Quit Exit_終了_Click: Exit Sub Err_終了_Click: MsgBox Err.Description Resume Exit_終了_Click End Sub

  • VBでのエラー処理(On Error)

    VBで以下のようなプログラムを書いています。 sub On Error goto Err 処理1 Err: 処理2 End sub 処理1でエラーが発生した場合、Err:の処理に入ってくるのですが、もしErr:の中の処理2でもエラーが発生した場合、どうすればよいのでしょうか? Err:の中でもエラー処理ができるのでしょうか、それともロジックで回避しなければならないのでしょうか? ご存知の方がいらっしゃいましたら宜しくお願いします。

  • セルに貼り付けた自作関数での書式反映について

    引数で日付を渡し、漢字の曜日一文字が返る関数をVBAで作成しました。 どうせなら日曜日の場合は文字の色を赤色にしようと思い、日曜日の場合だけ文字色を赤にする一文を追加しました。 が、セルにこの関数を貼り付けると曜日は返ってくるのですが、日曜日の場合の赤色が反映されません。 どなたかご教授いただければ嬉しいのですが、、、 宜しくお願い致します! OS:WindowsXP Excel:OfficeXP です。 以下に作成したマクロ関数を貼り付けます。 ********************************************************* Public Function week(d) As String  On Error GoTo err_week  Select Case Weekday(d)  Case vbSunday   week = "日"   Worksheets(Application.Caller.Worksheet.Name).Cells(Application.Caller.Row, Application.Caller.Column).Font.ColorIndex = 3  Case vbMonday   week = "月"  Case vbTuesday   week = "火"  Case vbWednesday   week = "水"  Case vbThursday   week = "木"  Case vbFriday   week = "金"  Case vbSaturday   week = "土"  Case Else   week = "×"  End Select Exit Function   err_week:  week = "ER"  Exit Sub 'End End Function *********************************************************

  • エラー処理

    エラー処理について質問です。 私はどうもVBのエラー処理が頭についているせいか、Javaの例外処理等が面倒に見えてならないんです。 例えば下記はVBのエラー処理なんですが、引数を得て計算して値を返すというものなのですが、引数自体が間違えてたら意味ないということでチェックします。 色んなチェックをして1つでも間違えてたらVVV_ERRORに飛びます。 下記のように「桁数チェック」とか「数値か?」とか調べる場合、Javaだとどのようにして書いたらいいのでしょう? Javaならtry文に全部入れてしまえばいいのでしょうが… .....例 try { x = 10 / 5; y = 20 / 0; //エラー } catch ( ArithmeticException ex ) { System.out.println (" 0で割ることはできません"); .....略 要は下記VBのようにモジュールごとに独自のエラーコードが存在する場合、どうエラー処理を書いたらいいのかということです。 皆さんならどうしますか?よろしければご意見等お願い致します。 //////////////////////////////////////////////////////////////// public Function VVV(YYYYMMDD As String , Kotae As String) As String ...... vvv_err = "" On Error GoTo VVV_ERROR '***************引数チェック '8桁か? If Len(YYYYMMDD) <> 8 Then vvv_err = "8桁ではありません" GoTo VVV_ERROR End If '数値か? If IsNumeric(YYYYMMDD) = False Then vvv_err = "数値ではありません" GoTo VVV_ERROR End If .....略(同じようなIf文の引数チェックがたくさんあります) '***************ERROR処理 VVV_ERROR: vvv_err = vvv_err & err.Description & err.Number .....略

    • ベストアンサー
    • Java

専門家に質問してみよう