Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2013)
ActiveWorkbook.Nameで停止する
投稿日時: 19/09/06 10:44:48
投稿者: yukagon

下記を実行した時に、入力ファイル = ActiveWorkbook.Name で停止するPCと
しないPCがあります。
原因はDim 入力ファイル の型がしてされていない事だと思うのですが
何故、問題なく実行できるPCと出来ないPCが出てしまうのでしょうか?
 
 
Dim 入力ファイル
Dim データ入力セル As String
Dim データ保管フォルダ As String
Dim データ範囲 As Range
Dim 最終列 As Long
'
Sub 項目データ作成()
    'Application.ScreenUpdating = False
     
    入力ファイル = ActiveWorkbook.Name
     
    '集計データを消去
    Workbooks(入力ファイル).Sheets("入力シート").Activate
    Range("B26").CurrentRegion.Delete
    Range("E26").CurrentRegion.Delete
    Range("H26").CurrentRegion.Delete
         
    Workbooks(入力ファイル).Sheets("項目用").Activate
    Range("A1").Activate
    データ入力セル = ActiveCell.Address

回答
投稿日時: 19/09/06 11:14:33
投稿者: simple

エラーが出るのでしょうから、
どのようなエラーメッセージか示してください。

回答
投稿日時: 19/09/06 18:40:06
投稿者: simple

エラーは出ないと言うことなら、ブレークポイントが残ってしまっているという
ことなんでしょうか?
↓こちらの議論が参考になるかも。
https://www.moug.net/faq/viewtopic.php?t=78551
 
エラーなら、エラーメッセージにもよりますが、
参照設定のなかにエラーになっているものがないかくらいですね、思い当たるのは。
でもそれは、既存の関数などを使うときですしねえ。
 
通常では考えられない事象ですので、
たぶん環境的なことが理由なのでしょう。原因解明は難しそうです。
ブックが壊れている可能性も視野に入れておいた方がよいでしょう。
新しくブックを作り直しても、特定PCで間違いなく異常がおきるのでしょうか?
 
それでなくても、珍しい状況なのに、
エラー内容が秘密で、単に待っているだけだと、
解決する可能性は低下するばかりです。(私は別に困りませんけど)
 
# まあ、エラーメッセージを提示してもらっても、
# 絶対解決できるという保証はありませんけど、皆さんの参考にはなる情報だと思います。
 
エラー内容にもよりますが、どうしてもということなら、
マイクロソフト社に直接尋ねるのが速いかも知れません。
ただし、余り期待できないかもしれませんが。
 
--------------------------------------
■追記
 
エラーにたぶん関係しないと思いますが、
コーディング上のことを書いておきます。参考にして下さい。
 
(1)
対象とするブックは 現在アクティブになっているブックなんですね。
それなら、

    Dim wb As Workbook
    Set wb = ActiveWorkbook
として、wbを使い回したほうがよいと思います。
別に名前(Name)を介する必要はありません。
 
もし、そのコードが書かれているブックということなら、
    Set wb = ThisWorkbook
です。
 
(2)
データ入力セルも名前で指定しようとしていますが、
これもオブジェクトそのもので指定するようにしたほうがよいと思います。
Set データ入力セル =  wb.Sheets("項目用").Range("A1")
といった感じです。このほうが判別し易いし、コンパクトに書けます。
 
(3)
    Range("B26").CurrentRegion.Delete
これは、削除後、どちらにシフトすることを想定しているんだろうか。
左?それとも上? 
明示的に指定したほうがよいと思います。
 
指定しないと左にシフトすることもあります。
B,E,H列を指定していますが、それは削除して移動することを反映済みなんでしょうか?
 
もし.ClearContentsの意味だったら、それを使った方がよいと思う。
Deleteだと書式なども消されてしまうから、ちょっと真意が分かりにくい。
 
以上です。

投稿日時: 19/09/09 09:38:19
投稿者: yukagon

回答が遅くなり申し訳ありません。
 
停止する時のエラーメッセージです。
 
実行時エラー 91
オブジェクト変数または With ブロック変数が設定されていません。

回答
投稿日時: 19/09/09 11:36:50
投稿者: WinArrow
投稿者のウェブサイトに移動

もしかしたら・・・・ですが
  
このプロシジャ実行する前に
  
     Windows(ThisWorkbook.Name).Visible = False
または
    Windows(ActiveWorkbook.Name).Visible = False
のようなコードを実行していませんか?

投稿日時: 19/09/09 12:52:38
投稿者: yukagon

     Windows(ThisWorkbook.Name).Visible = False
  
    Windows(ActiveWorkbook.Name).Visible = False
 
どちらの コードも実行されていません。

回答
投稿日時: 19/09/09 13:55:41
投稿者: WinArrow
投稿者のウェブサイトに移動

yukagon さんの引用:

     Windows(ThisWorkbook.Name).Visible = False
  
    Windows(ActiveWorkbook.Name).Visible = False
 
どちらの コードも実行されていません。

 
そうですか・・・・
こちらの意図が伝わっていないような気もしますが・・・・
 
ところで、当該ブックを開くところのコードはどのようになっていますか?
 
前後関係も一緒に掲示でいますか?

回答
投稿日時: 19/09/09 13:59:25
投稿者: mattuwan44

>何故、問題なく実行できるPCと出来ないPCが出てしまうのでしょうか?
う〜ん。実機を見ないとわからないかもしれません。
というのは、提示された情報だけでは違いが解らないからです。
逆に言うと「同じはず」と思いこまれているように思います。
 
コードが一行一句ホントに同じか再度確認してみてはいかがでしょうか?

投稿日時: 19/09/10 10:58:23
投稿者: yukagon

マクロのセキュリティ設定の変更で症状が出たり出なかったりの様です。
根本原因が良く分からないので、今回の質問が終わりにさせて戴きます。
色々とご指導戴きありがとうございました。