Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9328 / 13646 ツリー ←次へ | 前へ→

【27900】実行時エラー'1004' VBA初心者 05/8/23(火) 19:08 質問[未読]
【27902】Re:実行時エラー'1004' だるま 05/8/23(火) 19:45 回答[未読]
【27908】Re:実行時エラー'1004' VBA初心者@自宅 05/8/23(火) 23:03 お礼[未読]
【27926】Re:実行時エラー'1004' VBA初心者 05/8/24(水) 15:54 発言[未読]
【27903】Re:実行時エラー'1004' ichinose 05/8/23(火) 20:06 発言[未読]
【27909】Re:実行時エラー'1004' VBA初心者@自宅 05/8/23(火) 23:05 お礼[未読]
【27925】Re:実行時エラー'1004' VBA初心者 05/8/24(水) 15:42 発言[未読]
【27933】Re:実行時エラー'1004' ichinose 05/8/24(水) 18:27 発言[未読]
【27936】Re:実行時エラー'1004' りん 05/8/24(水) 19:40 発言[未読]
【27939】Re:実行時エラー'1004' ichinose 05/8/24(水) 20:54 発言[未読]
【27942】Re:実行時エラー'1004' ichinose 05/8/24(水) 21:27 発言[未読]
【28022】Re:実行時エラー'1004' VBA初心者 05/8/26(金) 17:15 お礼[未読]
【27955】Re:実行時エラー'1004' VBA初心者 05/8/25(木) 11:03 発言[未読]
【27960】Re:実行時エラー'1004' だるま 05/8/25(木) 13:40 回答[未読]
【28023】Re:実行時エラー'1004' VBA初心者 05/8/26(金) 17:16 お礼[未読]
【27977】Re:実行時エラー'1004' りん 05/8/25(木) 19:33 発言[未読]
【28021】Re:実行時エラー'1004' VBA初心者 05/8/26(金) 17:14 お礼[未読]

【27900】実行時エラー'1004'
質問  VBA初心者  - 05/8/23(火) 19:08 -

引用なし
パスワード
   はじめまして。
VBA初心者です。

以下の記述の意味を教えていただけませんでしょうか。

Sheet1.set1 Worksheets("設定").Range("A1").Value

windows update後上記ステップで
実行時エラー'1004'
アプリケーション定義またはオブジェクト定義のエラーです。

のメッセージが出力されメニュー画面が起動できなくなってしまいました。
(プログラム作成者はすでに辞めておりきくことができません)

よろしくお願いいたします。

【27902】Re:実行時エラー'1004'
回答  だるま WEB  - 05/8/23(火) 19:45 -

引用なし
パスワード
   >以下の記述の意味を教えていただけませんでしょうか。
>
>Sheet1.set1 Worksheets("設定").Range("A1").Value

Sheet1モジュールのSet1というパブリックプロシージャに引数として
Worksheets("設定").Range("A1").Value
の値を渡しています。

つまり、Sheet1モジュールには
Sub Set1(V as Variant)
のようなプロシージャが書かれているものと思われます。^d^

【27903】Re:実行時エラー'1004'
発言  ichinose  - 05/8/23(火) 20:06 -

引用なし
パスワード
   ▼VBA初心者 さん:
こんばんは。

>
>以下の記述の意味を教えていただけませんでしょうか。
>
>Sheet1.set1 Worksheets("設定").Range("A1").Value
>
>実行時エラー'1004'
>アプリケーション定義またはオブジェクト定義のエラーです。
これだけでは、本当のエラー原因はわかりません。
Sheet1.set1

Sheet1のシートモジュールにset1というプロシジャーが
あるはずです。
そのプロシジャー内で何らかの原因で
>アプリケーション定義またはオブジェクト定義のエラーです。
エラーが発生しています。
つまり、直接のエラー原因はset1というプロシジャー内の
コードにありそうです。
(既定設定では、クラスモジュール内でトラップしないので)

デバッグのステップインを利用して一行づつコードを実行させて
真のエラー箇所を探しましょう!!

【27908】Re:実行時エラー'1004'
お礼  VBA初心者@自宅  - 05/8/23(火) 23:03 -

引用なし
パスワード
   ▼だるま さん:
VBA初心者@自宅です。

返信ありがとうございます。
明日またトライしてみます。

【27909】Re:実行時エラー'1004'
お礼  VBA初心者@自宅  - 05/8/23(火) 23:05 -

引用なし
パスワード
   ▼ichinose さん:
VBA初心者@自宅です。

返信ありがとうございます。
明日またトライしてみます。

【27925】Re:実行時エラー'1004'
発言  VBA初心者  - 05/8/24(水) 15:42 -

引用なし
パスワード
   ▼ichinose さん:
こんにちは。

下記のset命令で「 Worksheetsメソッドが失敗しました」
のメッセージが出たので
以下のように変数S使用せず明示的にワークシート設定を修正しましたが、1004が出てしまいます。


Sub set1(n As Byte)
  Const CB As String = "CommandButton"
  Dim S As Worksheet
  Dim i As Byte
  
  'Set S = Worksheets("設定")
  For i = 1 To n
    Sheet1.OLEObjects(CB & Format(i)).Object.Caption = Worksheets("設定").Cells(i + 1, 1).Value
    book1(i - 1) = Worksheets("設定").Cells(i + 1, 2).Value
  Next i
End Sub


windows update前は問題なかったのですが・・・
困りました・・・

【27926】Re:実行時エラー'1004'
発言  VBA初心者  - 05/8/24(水) 15:54 -

引用なし
パスワード
   ▼だるま さん:
こんにちは。

返信ありがとうございます。

>つまり、Sheet1モジュールには
>Sub Set1(V as Variant)
>のようなプロシージャが書かれているものと思われます。^d^

確かに以下の記述がありました。

Sub set1(n As Byte)
  Const CB As String = "CommandButton"
  Dim S As Worksheet
  Dim i As Byte
  
  Set S = Worksheets("設定")
  For i = 1 To n
    Sheet1.OLEObjects(CB & Format(i)).Object.Caption = S.Cells(i + 1, 1).Value
    book1(i - 1) = S.Cells(i + 1, 2).Value
  Next i
End Sub

======================================================
Sub set1(n As Byte)
  Const CB As String = "CommandButton"
  Dim S As Worksheet
  Dim i As Byte
  
  'Set S = Worksheets("設定")
  For i = 1 To n
    Sheet1.OLEObjects(CB & Format(i)).Object.Caption = Worksheets("設定").Cells(i + 1, 1).Value
    book1(i - 1) = Worksheets("設定").Cells(i + 1, 2).Value
  Next i
End Sub

変数Sを使用しないように修正したのですが
やはり

Sheet1.set1 Worksheets("設定").Range("A1").Value

のステートメントで1004でエラーとなります。
windows updateを実施する前は問題なかったのですが・・・
困りました・・・

【27933】Re:実行時エラー'1004'
発言  ichinose  - 05/8/24(水) 18:27 -

引用なし
パスワード
   ▼VBA初心者 さん:

こんばんは。

>
>下記のset命令で「 Worksheetsメソッドが失敗しました」
>のメッセージが出たので
このエラーが再現できませんでした。
ひょっとしてIEからExcelのXlsファイルを読み込む
なんてことしていませんか?


>以下のように変数S使用せず明示的にワークシート設定を修正しましたが、1004が出てしまいます。
まあ、上記がエラーになるならこれはそうなんでしょうが・・
>
>
>Sub set1(n As Byte)
>  Const CB As String = "CommandButton"
>  Dim S As Worksheet
>  Dim i As Byte
>  
>  'Set S = Worksheets("設定")
>  For i = 1 To n
>    Sheet1.OLEObjects(CB & Format(i)).Object.Caption = Worksheets("設定").Cells(i + 1, 1).Value
>    book1(i - 1) = Worksheets("設定").Cells(i + 1, 2).Value
>  Next i
>End Sub
>

このエラーが発生したときにExcel上に開かれている
ブックはいくつありますか?
提示されたVBAコードを含むブックだけですか?
(気になるのは、「設定」と付けられたシートがどこにあるかですが・・・)

それとWindowsとExcelのバージョンも記述してください。
今のところ、よくわからないので解決するか否かは
わかりませんが、バージョン情報も含めて
なるべく多くの情報を提示してみてください。

【27936】Re:実行時エラー'1004'
発言  りん E-MAIL  - 05/8/24(水) 19:40 -

引用なし
パスワード
   こんばんわ

>>下記のset命令で「 Worksheetsメソッドが失敗しました」
メソッド?

>>Sub set1(n As Byte)
>>  Const CB As String = "CommandButton"
>>  Dim S As Worksheet
>>  Dim i As Byte
>>  
>>  'Set S = Worksheets("設定")
>>  For i = 1 To n
>>    Sheet1.OLEObjects(CB & Format(i)).Object.Caption = Worksheets("設定").Cells(i + 1, 1).Value
>>    book1(i - 1) = Worksheets("設定").Cells(i + 1, 2).Value
>>  Next i
>>End Sub
>このエラーが発生したときにExcel上に開かれている
>ブックはいくつありますか?
>提示されたVBAコードを含むブックだけですか?
>(気になるのは、「設定」と付けられたシートがどこにあるかですが・・・)
>Worksheetsの前(Workbooks)を明示するとエラーがなくなるかも。
Win98&XL2kで組んだマクロをXP&XPに持っていったら、ActiveSheetかActiveWorkbookの認識失敗でエラーになったことがありました。原因はわからないし、再現もできませんが。

【27939】Re:実行時エラー'1004'
発言  ichinose  - 05/8/24(水) 20:54 -

引用なし
パスワード
   ▼りん さん:
こんばんは。


>
>>>下記のset命令で「 Worksheetsメソッドが失敗しました」
>メソッド?
ですよねえ・・・、

でもこのエラー、ありそうなんですよね!!

Sub test()
  Sheet1.OLEObjects("commandbutton1").Object.Caption = "aaa"
End Sub
このコードでSheet1にCommandbutton1を配置しないで実行すると、
1004 'OLEObjects' メソッドは失敗しました: '_Worksheet' オブジェクト
なんていうエラーが発生するので・・。


>
>>>Sub set1(n As Byte)
>>>  Const CB As String = "CommandButton"
>>>  Dim S As Worksheet
>>>  Dim i As Byte
>>>  


>>>  'Set S = Worksheets("設定")
>>>  For i = 1 To n
>>>    Sheet1.OLEObjects(CB & Format(i)).Object.Caption = Worksheets("設定").Cells(i + 1, 1).Value
>>>    book1(i - 1) = Worksheets("設定").Cells(i + 1, 2).Value
>>>  Next i
>>>End Sub
>>このエラーが発生したときにExcel上に開かれている
>>ブックはいくつありますか?
>>提示されたVBAコードを含むブックだけですか?
>>(気になるのは、「設定」と付けられたシートがどこにあるかですが・・・)
>>Worksheetsの前(Workbooks)を明示するとエラーがなくなるかも。

>Win98&XL2kで組んだマクロをXP&XPに持っていったら、ActiveSheetかActiveWorkbookの認識失敗でエラーになったことがありました。原因はわからないし、再現もできませんが。
ブックの上位互換の問題なんでしょうかねえ?
私もサンプルを作って試してみます。

【27942】Re:実行時エラー'1004'
発言  ichinose  - 05/8/24(水) 21:27 -

引用なし
パスワード
   >ブックの上位互換の問題なんでしょうかねえ?
上位ではなく、ただの互換性でした。
失礼しました。
>私もサンプルを作って試してみます。

【27955】Re:実行時エラー'1004'
発言  VBA初心者  - 05/8/25(木) 11:03 -

引用なし
パスワード
   ▼ichinose さん:
おはようございます。
返信ありがとうございます。

>このエラーが再現できませんでした。
>ひょっとしてIEからExcelのXlsファイルを読み込む
>なんてことしていませんか?
IEからExcelのXlsファイルを読み込むことはしておりません。

>このエラーが発生したときにExcel上に開かれている
>ブックはいくつありますか?
>提示されたVBAコードを含むブックだけですか?
>(気になるのは、「設定」と付けられたシートがどこにあるかですが・・・)

ブックは「請求メニュー.xls」ひとつです。「設定」シートもその中にあります。

画面左のvba projectは下記のようなイメージになっています。
Lib2というのは共通モジュールのようです。

LIB2 (Lib2.xla)
 Microsoft Excel Objects
 標準モジュール
   Module1
VBAProject(請求メニュー.xls)
 Microsoft Excel Objects
   Sheet1(1)
   Sheet2(設定)
   ThisWorkbook
 参照設定
   参照先 Lib2.xla

------------------------------
以下は請求メニューのソースです。


Private Sub Workbook_Open()
  sv_path = Application.DefaultFilePath
  sv_drv = Left(sv_path, 1)
  sv_prn = Application.ActivePrinter
  With Application
    .ScreenUpdating = False
    .Caption = "請求書作成"
  End With
  Sheet1.set1 Worksheets("設定").Range("A1").Value =>ここで1004です。
  CB_clear
  book_open "汎用名称.xls"
  add_button
End Sub
Private Sub Workbook_Activate()
  Sheet1.OptionButton1.Value = Not (nflg)
  Sheet1.OptionButton2.Value = nflg
  With Application
    .WindowState = xlNormal
    .Height = 323
    .Width = 350
  End With
  Application.ActivePrinter = sv_prn
End Sub

Private Sub Workbook_Deactivate()
  nflg = Sheet1.OptionButton2.Value
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  CB_set
  book_close "汎用名称.xls"
  With Application
    .DisplayAlerts = False
    .WindowState = xlMaximized
  End With
End Sub

>
>それとWindowsとExcelのバージョンも記述してください。
>今のところ、よくわからないので解決するか否かは
>わかりませんが、バージョン情報も含めて
>なるべく多くの情報を提示してみてください。

Windowsはサーバ/クライアントとも2000です。
Excelも2000です。
サーバ側のフォルダにブックを入れてあります。

お忙しいところ申し訳ございません。
よろしくお願いいたします。

【27960】Re:実行時エラー'1004'
回答  だるま WEB  - 05/8/25(木) 13:40 -

引用なし
パスワード
   >Sheet1.set1 Worksheets("設定").Range("A1").Value
は、

Sheet1上の既存のボタンの各々の表示名を、
ワークシート「設定」のA2から下の各々の表示値にする、
個数はワークシート「設定」のA1の値。

ということをやっているようですので、もしかしてそのA1の値(個数)が
既存のボタンの個数を超えているため、指定の名前のボタンが無い
ということでエラーになっているということは無いでしょうか。^d^

【27977】Re:実行時エラー'1004'
発言  りん E-MAIL  - 05/8/25(木) 19:33 -

引用なし
パスワード
   VBA初心者 さん、こんばんわ。

だるまさんので解決してたらいいですが。

>Private Sub Workbook_Open()
>  sv_path = Application.DefaultFilePath
>  sv_drv = Left(sv_path, 1)
>  sv_prn = Application.ActivePrinter
>  With Application
>    .ScreenUpdating = False
>    .Caption = "請求書作成"
>  End With
  'これを追加して実行してみてください。
  MsgBox Sheet1.Parent.Name, vbInformation
  MsgBox Worksheets("設定").Parent.Name, vbInformation
>  Sheet1.set1 Worksheets("設定").Range("A1").Value =>ここで1004です。
>  CB_clear
>  book_open "汎用名称.xls"
>  add_button
>End Sub

【28021】Re:実行時エラー'1004'
お礼  VBA初心者  - 05/8/26(金) 17:14 -

引用なし
パスワード
   ▼りん さん:
こんにちは。

いろいろとトライしていくうちに
vbeのツール>参照設定でLib2ファイルが参照不可となっていました。
これが問題のようです。
ただどうしても
「指定されたファイルへの参照は登録できません」のメッセージが出力され
参照設定できません。

最初の質問内容から外れてきてしまいました。

CLOSEさせていただきたいと思います。

いろいろと調査いただき本当にありがとうございました。

【28022】Re:実行時エラー'1004'
お礼  VBA初心者  - 05/8/26(金) 17:15 -

引用なし
パスワード
   ▼ichinose さん:
こんにちは。

いろいろとトライしていくうちに
vbeのツール>参照設定でLib2ファイルが参照不可となっていました。
これが問題のようです。
ただどうしても
「指定されたファイルへの参照は登録できません」のメッセージが出力され
参照設定できません。

最初の質問内容から外れてきてしまいました。

CLOSEさせていただきたいと思います。

いろいろと調査いただき本当にありがとうございました。

【28023】Re:実行時エラー'1004'
お礼  VBA初心者  - 05/8/26(金) 17:16 -

引用なし
パスワード
   ▼だるま さん:
こんにちは。

いろいろとトライしていくうちに
vbeのツール>参照設定でLib2ファイルが参照不可となっていました。
これが問題のようです。
ただどうしても
「指定されたファイルへの参照は登録できません」のメッセージが出力され
参照設定できません。

最初の質問内容から外れてきてしまいました。

CLOSEさせていただきたいと思います。

いろいろと調査いただき本当にありがとうございました。

9328 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free