Excel VBA質問箱 IV

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

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


8968 / 13644 ツリー ←次へ | 前へ→

【30008】型が一致しません。 MO12 05/10/18(火) 10:47 質問[未読]
【30011】Re:型が一致しません。 Statis 05/10/18(火) 11:17 質問[未読]
【30013】Re:型が一致しません。 MO12 05/10/18(火) 11:47 質問[未読]
【30016】Re:型が一致しません。 Statis 05/10/18(火) 12:03 発言[未読]
【30017】Re:型が一致しません。 MO12 05/10/18(火) 12:15 質問[未読]
【30019】Re:型が一致しません。 MO12 05/10/18(火) 12:22 質問[未読]
【30020】Re:型が一致しません。 Statis 05/10/18(火) 12:31 質問[未読]
【30022】Re:型が一致しません。 awu 05/10/18(火) 13:18 回答[未読]
【30025】Re:型が一致しません。 MO12 05/10/18(火) 15:39 お礼[未読]
【30026】Re:型が一致しません。 MO12 05/10/18(火) 15:45 質問[未読]
【30049】Re:型が一致しません。 awu 05/10/18(火) 19:47 発言[未読]
【30051】Re:型が一致しません。 MO12 05/10/18(火) 20:11 回答[未読]

【30008】型が一致しません。
質問  MO12  - 05/10/18(火) 10:47 -

引用なし
パスワード
   データリンクを操作するVBAを作っていますが、
通常は意図どうりになります。ですが
このエクセルのシートを立ち上げるときリンクを更新しますか?と
いう表示がでます。それを更新するをクリックする
ところまではいいのですが、
更新するを押すとすぐ型が一致しません。というエラーがでます。
これをVBEの□のデバック解除のボタンを押して△の実行ボタンを
押すと正常に動作します。
これをせずに更新するを押しただけエラーが表示されないようにするには
どうしたらよいのでしょうか?

【30011】Re:型が一致しません。
質問  Statis  - 05/10/18(火) 11:17 -

引用なし
パスワード
   ▼MO12 さん:
こんにちは
どこでデバックしますか?コードをUpしてみて下さい

【30013】Re:型が一致しません。
質問  MO12  - 05/10/18(火) 11:47 -

引用なし
パスワード
   返信ありがとうございます♪
Option Explicit

Dim Dt1 As Double, Dt2 As Double
Private Sub Worksheet_Calculate()

  If Worksheets("sheet1").Range("B1").Value > Dt2 Then ←ここでエラー
    Dt2 = Worksheets("sheet1").Range("B1").Value    
  If Dt1 > 0 Then
      With Application
        .EnableEvents = False
      Worksheets("sheet1").Range("B2").Value = Dt2 - Dt1
        .EnableEvents = True
      End With
    End If
    '
    Dt1 = Dt2
    
  End If
End Sub

>どこでデバックしますか?
どこでデバックしますか?一応コードはSheet1に貼り付けますが。

【30016】Re:型が一致しません。
発言  Statis  - 05/10/18(火) 12:03 -

引用なし
パスワード
   こんにちは

>If Worksheets("sheet1").Range("B1").Value > Dt2 Then ←ここでエラー
こちらで試しましたがErrは出ないですね??
後はリンク元の値は問題ないですか?
数値になっていますか?

【30017】Re:型が一致しません。
質問  MO12  - 05/10/18(火) 12:15 -

引用なし
パスワード
   ▼Statis さん:
>こんにちは
>
>>If Worksheets("sheet1").Range("B1").Value > Dt2 Then ←ここでエラー
>こちらで試しましたがErrは出ないですね??
>後はリンク元の値は問題ないですか?
>数値になっていますか?

入力しているのは数式ですが、表示されるのは
数値ですけど。これが問題でしょうか?
上記に書いたようにエラー表示が出た後□を押して△を
押すとエラーにはでないんですよね。
コード自体はあっていると思うのですが
Worksheets("sheet1").Range("B1").Valueの部分の型が合わないと
コンピューターはいっているのでしょうか?
謎です。

【30019】Re:型が一致しません。
質問  MO12  - 05/10/18(火) 12:22 -

引用なし
パスワード
   ▼MO12 さん:
>▼Statis さん:
>>こんにちは
>>
>>>If Worksheets("sheet1").Range("B1").Value > Dt2 Then ←ここでエラー
>>こちらで試しましたがErrは出ないですね??
>>後はリンク元の値は問題ないですか?
>>数値になっていますか?
>
>入力しているのは数式ですが、表示されるのは
>数値ですけど。これが問題でしょうか?
>上記に書いたようにエラー表示が出た後□を押して△を
>押すとエラーにはでないんですよね。
>コード自体はあっていると思うのですが
>Worksheets("sheet1").Range("B1").Valueの部分の型が合わないと
>コンピューターはいっているのでしょうか?
>謎です。

もしかして、更新ボタンを押したあとに#N/Aとでますが、
これを読み取って型と一致しないとコンピュータがいっているのでしょうか?
これの回避の仕方はどうしたらよいのでしょうか?

【30020】Re:型が一致しません。
質問  Statis  - 05/10/18(火) 12:31 -

引用なし
パスワード
   こんにちは
>もしかして、更新ボタンを押したあとに#N/Aとでますが、
>これを読み取って型と一致しないとコンピュータがいっているのでしょうか?
>これの回避の仕方はどうしたらよいのでしょうか?
可能性はあります
Errを回避したいのなら「On Error ステートメント」を
ヘルプで調べてみて下さい。

【30022】Re:型が一致しません。
回答  awu  - 05/10/18(火) 13:18 -

引用なし
パスワード
   > 一応コードはSheet1に貼り付けますが。

それなら、こんな感じで如何でしょうか。

B1が、#N/Aとき、何もしないでいいのであれば ですが・・・


Private Sub Worksheet_Calculate()
  If Not IsNumeric(Range("B1").Value) Then Exit Sub
  If Range("B1").Value > Dt2 Then
    Dt2 = Worksheets("sheet1").Range("B1").Value
    If Dt1 > 0 Then
      With Application
        .EnableEvents = False
        Range("B2").Value = Dt2 - Dt1
        .EnableEvents = True
      End With
    End If
    Dt1 = Dt2
  End If
End Sub

【30025】Re:型が一致しません。
お礼  MO12  - 05/10/18(火) 15:39 -

引用なし
パスワード
   対策方法をおしえてくださったみなさんありがとうございました。
見事に解決しました。
また、何かありましたらよろしくお願いします♪
失礼します。

【30026】Re:型が一致しません。
質問  MO12  - 05/10/18(火) 15:45 -

引用なし
パスワード
   ▼awu さん:
 
ちなみにロードしたと同時に更新ボタンを押すもしくはそれと
同等の処理、自動的に更新するにはどんなマクロを記述したら
よいのでしょうか?ご教授願えないでしょうか?
よろしくお願いします。

【30049】Re:型が一致しません。
発言  awu  - 05/10/18(火) 19:47 -

引用なし
パスワード
   いまいち質問の意味が、はっきりしませんが・・・

「ロードしたと同時に」という意味は、前のコードは、シートクラスの
再計算時イベントを使っていましたが、それをブックを開いた時点で実行したい
という意味でしょうか?

モジュールの先頭に、Dim Dt1 As Double, Dt2 As Double がありますので、
このイベントプロシージャ以外に何かあるのではないかと思いますが・・・?


前のコードで、この変数に何処でどのような値をLetされているか推測出来
ませんので何とも言えませんが、ブックを開いた時点では、これらの変数は、
0 になっています。

まぁ、ThisWorkbookクラスのOpen時イベントであれば、こんな感じですが・・・
Dt1とDt2の変数のことで、このままではダメですが・・・

Dim Dt1 As Double, Dt2 As Double
Private Sub Workbook_Open()
With Worksheets("Sheet1")
  If Not IsNumeric(.Range("B1").Value) Then Exit Sub
  If .Range("B1").Value > Dt2 Then
    Dt2 = .Range("B1").Value
    If Dt1 > 0 Then .Range("B2").Value = Dt2 - Dt1
    Dt1 = Dt2
  End If
End With
End Sub

もし、的外れのときは、シートの状態が、このようになっているとき、
どの時点で、どのようにしたいのか、補足していただければ宜しいかと。


▼MO12 さん:
>▼awu さん:
> 
>ちなみにロードしたと同時に更新ボタンを押すもしくはそれと
>同等の処理、自動的に更新するにはどんなマクロを記述したら
>よいのでしょうか?ご教授願えないでしょうか?
>よろしくお願いします。

【30051】Re:型が一致しません。
回答  MO12  - 05/10/18(火) 20:11 -

引用なし
パスワード
   数式をセットしているシートを開く時に、最初にダイアログに
リンクを更新するかどうかがでるのでそれを回避もしくは実行する
マクロを作成して自動化できないだろうか?
とういうのが私の質問でした。
一応エクセルの設定でリンク更新を表示させないをオフにすることで解決できましたが、もしマクロで解除する方法をお知りでしたら
お教えください。よろしくっす♪

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