• ベストアンサー

VBAでFormat がうまく使えない

KenKen_SPの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

AloneAgain さんが回答されたとおり、参照設定が原因でしょう。 >同じ環境(同じPC・同じEXCEL)で新規ファイルを作成し、同じ表記をすると >普通にFormat関数が使用できます ここまでされているのだから、あとは、「OKなファイル」と「NGのファイル」の参照設定を比較してみれば、解決できるかと思います。

lamplight
質問者

お礼

ご返答有難うございます。 確かにお教えいただいた通り、「参照不可」の参照設定ライブラリが2つもありました! 特別使用した記憶がなかったため、こんなところで引っかかるとは思いもせず・・・。 まだ削除には時間がかかるようですが、手がかりも頂きましたしこれからなんとかしていこうと思います。 的確なご返答ありがとうございました。

関連するQ&A

  • VBAコード実行を中止する方法は?(1プロシージャだけでなく)

    Exit Subは子だけしか中止できないのですね。 子でエラー起きたら、親もその他もまとめて中止することはできないのでしょうか? Sub 子()   Dim i As Integer   For i = 0 To 5     If 3 < i Then       '' ここで親も終了したい     End If     MsgBox i   Next End Sub Sub 親()   子   MsgBox "エラーならここまで来ないで" End Sub

  • FORMAT関数で値が変わる

    こんにちは、 Win98でExcel2000のVBAを使用してマクロを組んでいるのですが、FORMAT関数を使っている部分で予想外の結果がでています。 以下、プログラムです。 Private Sub Test() Dim AAA as String AAA = "6P" AAA = FORMAT(AAA,"000") MsgBox AAA End Sub MsgBoxの表示が"06P"になるはずだと思っていたのですが、 なぜが"001"になってしまいます。 他の質問などを見てみると"E"や"D"などでも表示が変わるというものを見ました。"P"も同じようなものなのでしょうか、また"06P"と表示させるにはどうしたらよいでしょうか? どなたかご存知の方がいらっしゃったっらご回答お願い致します。

  • VBAを始めたばかりです。

    VBAを始めたばかりです。 下記でエラー「オブジェクトが必要です」が出ます。 何故ですか。 Sub A_Sample048() Dim mySht1 As Object Dim mySht2 As Worksheet '準備ここまで Set mySht1 = ActiveSheet If mySht1.Type = xlWorksheet Then Set mySht2 = mySht1 MsgBox mySht2.Name Else MsgBox "最前面のシートはワークシートではありません" End If Set mySht1 = Nothing 'オブジェクトの解放 Set mySht2 = Nothing End Sub よろしくお願いします。

  • アクセス2000VBA

    アクセス2000でのVABで Dim OutFlName Dim 先頭 Dim 後方 WK集計開始日 = Me![開始日] WK集計終了日 = Me![終了日] 先頭 = Format(WK集計開始日, "GGGEE\年MM\月DD\日") 後方 = Format(WK集計終了日, "GGGEE\年MM\月DD\日") OutFlName = "C:\ACDB\" & 先頭 & "から" & 後方 & "間の日報データ.xls" Response = MsgBox(WK集計開始日 & "から" & WK集計終了日 & "までの日報データをエクセルに出力します。", vbInformation + vbYesNo, "日報データ出力") If Response = vbYes Then DoCmd.OutputTo acOutputQuery, "NWKQ_日報一覧", acFormatXLS, OutFlName, True '," On Error GoTo 0 MsgBox "データの出力が完了しました。", vbInformation + vbOKOnly, "出力完了" On Error Resume Next Else MsgBox "出力を中止します。", vbExclamation + vbOKOnly, "出力中止" Exit Sub End If DoCmd.Close acForm, Me.Name End Sub というプログラムを組んでいます。格納先をC:\ACDB\currentにしたいのですが、OutFlName = "C:\ACDB\" & 先頭 & "から" & 後方 & "間の日報データ.xls"を"C:\ACDB\current" &~ に変更すると、C:\ACDB直下でcurrent先頭~のファイル名で保存されます。 これを上手くC:\ACDB\currentへ保存できる方法はないでしょうか。

  • 以下のVBAについて

    Option Compare Database Option Explicit Private Sub バックアップ開始_Click() Dim strBaseName As String Dim strFileName As String If IsNull(Me.バックアップ日付) = True Or Len(Me.バックアップ日付) = 0 Then MsgBox "バックアップ日付をyyyymmdd形式で入力してください。", vbOKOnly + vbCritical, "" Me.バックアップ日付.SetFocus Exit Sub End If strBaseName = "C:\Data\在庫管理.mdb" strFileName = "C:\Backup\" & Format(Me.日付, "yyyymmdd") & "StockData.mdb" If Dir(strFileName) <> "" Then If MsgBox(strFileName & Chr(13) & "は存在します。" & Chr(13) & _ "上書しますか?", vbYesNo + vbQuestion, "") = vbNo Then Exit Sub End If End If On Error GoTo LBL_ERROR FileCopy strBaseName, strFileName MsgBox "バックアップが完了しました。", vbInformation, "" LBL_EXIT: Exit Sub LBL_ERROR: Resume LBL_EXIT End Sub 上記のVBAでバックアップを行いたいのですが、フォルダ等も設定しているの実行されません。上記の文に間違いがあるのでしょうか? ソフトはAccessです。

  • Excel2000のVBAでわからないことがあります。

    こんなものを作ってみました。 Sub 理想体重() Dim Sin As Long Dim Tai As Long Sin = InputBox("あなたの体重は?", "体重") Tai = InputBox("あなたの身長は?", "身長") If Tai >= Sin * Sin * 21 / 10000 + 3 Then MsgBox "太りすぎです" ElseIf Tai <= Sin * Sin * 21 / 10000 - 3 Then MsgBox ("痩せすぎです") Else MsgBox ("標準です") End If End Sub 結果はきちんと出てくるのですが、最初の変数宣言のところがわかりません。 最初は、Longではなく、Integerにしたのですが、オーバーフローのエラーが出たので、Longに変更したところ、きちんと出てくるようになりました。 しかし、なぜ、Integerではだめなのかがわかりません。私としては、Integerは32,767までの数字が入るのだから、身長や体重を入れたぐらいだと、オーバーフローにはならないのではないかと考えています。 きっと、根本的なものがわかっていないんだとは思うのですが、違いを教えていただければうれしいです。 よろしくお願いいたします。 (VBAを勉強したばかりです。)

  • VBA 加算演算時のトラブル

    事務処理用に準備したVBA処理の数値合計チェックにて本来イコールとなるべきところ、ノットイコールと判定されてしまいます。当該部分を抜き出し、わかりやすくしたものが下記のロジックですが、ここで、test2,test4は結果がイコールとなるものの、test3の場合、ノットイコールとなってしまいます。どなたか、原因につき教えていただけませんか? Dim aaa As Double Dim bbb As Double sub test2() bbb = 16.67 + 16.67 aaa = 33.34 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End Sub Sub test3() bbb = 16.67 + 16.67 + 16.67 aaa = 50.01 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End Sub Sub test4() bbb = 16.67 + 16.67 + 16.67 + 16.67 aaa = 66.68 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End sub

  • VBA dateの戻り値

    ExcelVBA初心者です。 下記プログラムを組んでいるのですがMyDateの戻り値が常に -1された数字になってしまいます。 たとえば、25を入力したら24になる。これはなぜなのでしょうか? また、0だと30になってしまいます。 Sub hani() Dim MyDate As Date MyDate = Application.InputBox("報告する日を入力してください", "報告日", Format(Now, "dd")) If Format(MyDate, "dd") > 0 And Format(MyDate, "dd") > 32 Then MsgBox Format(MyDate, "dd") MsgBox "範囲内" Else MsgBox Format(MyDate, "dd") MsgBox "範囲外" End If End Sub

  • VBAでの不明な点

    いつもお世話になっております。当方まだVBAを始めて3日ほどの新参者です。 以下のようにVBAにコードを書いたのですがどうしてもYESNO型になりません。 OKボタンしか表示しないのでぜひご指導頂けたらと思います。 バージョン:アクセス2010 Private Sub コマンド12_Click() Dim Rei As String Rei = MsgBox("【" & Format([Forms]![frm1200:合計金額]![合計金額], "#,###" & "円" & "】" & Chr(13) & Chr(13) & "金額は正しいですか?", vbYesNo)) If Rei = vbYes Then MsgBox ("OK") End If よろしくお願いします。まだ新参者なので他にご質問があればいくらでも補足しますので教えて下さい。 End Sub

  • エクセルVBA/ Formatで文字列が数値に化ける?

    いつもお世話様です。 エクセルVBAでFormatを使うと、文字列中にeが一つ入っていると、「指数」とみなされて勝手に数値に化けてしまうようです。 話を簡単にするため、問題のコートを簡易化したコードが下記のtest1です。 入力されるのは常に3文字以内の英数です。 test1のコードは、ab9と入れればAB9、01とか20とか入れると、予定通り001や020を返してくれます。 ところが、なかには1E1や4E3なども入力する必要があり、これを入れると010や4000に化けてしまいます。 現在は、対処するため、下記test2のように、文字列中に"E"があるかどうかで処理を分岐させていますが、ほかに何か良い方法はないでしょうか? Sub test1() Dim x As String, y As String, z As String x = Application.InputBox("CODEを入力してねん。", Type:=2) y = StrConv(StrConv(x, vbUpperCase), vbNarrow) z = Format(y, "000") MsgBox z & " Typeだよ。" End Sub Sub test2() Dim x As String, y As String, z As String x = Application.InputBox("CODEを入力してねん。", Type:=2) y = StrConv(StrConv(x, vbUpperCase), vbNarrow) If InStr(y, "E") > 0 Then z = y Else z = Format(y, "000") End If MsgBox z & " Typeだよ。" End Sub