
いままで問題なく動いていたVBAが標記のようなメッセージをだして動かなくなりました。
ネットで調べるとDecareにPtrSateを付加すれば良いとのことです。
ところがソースにはDecareステートメントはありません。
どうすればよろしいでしょうか、ご教示ください。
なお赤字で
Declare Function BeepAPI Lib "kernel32.dll" Alias "Beep" _
(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
というメッセージもエディタに表示されています。
OSは windows10Pro64ビット
Excelは Microsoft 365 mosです。
No.4
- 回答日時:
Declare Function BeepAPI Lib "kernel32.dll" Alias "Beep" _
(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
上の2行を単なる赤いメッセージと勘違いされていらっしゃいますが、Windows API の関数に接続するために記述された列記としたコードなのです。プロシージャ内で使われる API関数のコードと密接な関わりを持っている重曹なコードです。そして Decare ステートメントではなく、Declare ステートメントになります。
Declare ステートメント (VBA) | Microsoft Docs
https://docs.microsoft.com/ja-jp/office/vba/lang …
モジュールレベルで記述する決まりなので、プロシージャの上に記述されています。赤く表示されているのは、コンパイルエラーの箇所が赤く強調されているためですが、 Declare ステートメントは Excel を 32bit版 から 64bit版 に変更したら書き換える必要があります。
Beep関数(プロシージャ内では BeepAPI と記述されているはずです)に接続するコードは、以下のように修正すればコンパイルエラーは解消されます。
Declare PtrSafe Function BeepAPI Lib "kernel32.dll" Alias "Beep" _
(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
【参考まで】
Beep 関数 - Win32apps | Microsoft Docs(英語)
https://docs.microsoft.com/ja-jp/windows/win32/a …
ご教示ありがとうございます。
>Declare ステートメントは Excel を 32bit版 から 64bit版 に変更したら
>書き換える必要があります。
そのようですね。
ただDeclareステートメントは全く使用していないのです。
というより、私自身が初心者ですのでDeclareステートメントがあるということを今回初めて知りました。
エラーメッセージの画像などを職場にいったときにとるようにします。
引き続きご教示よろしくお願いします。
No.3
- 回答日時:
#2です。
>VBAエディタの上部に赤色で表示されており、エディタでは修正できません。
そうなんですね。コードウィンドに表示されているのではないのですね。
VBEは表示されているのですか?
既に行っていると思いますが、一応、念のため
Alt+F11でVBEを開き
編集タグ、検索 検索する文字に Declare 対象のオプションボタンを
カレント プロジェクト で 次を検索を押して検索してみてください。
もし見つからない場合は、プロジェクトウィンドウにある違うプロジェクトでも探してみてください。
(アドインや個人用マクロブックPERSONAL.XLSBの可能性があります)
他のプロジェクトに保護などが設定されている場合、修正が難しいので、最新のものに変えるか、使用を外す事になると思います。
>いままで問題なく動いていた
との事なので最近入れたアドインの可能性もありますね。64bitに対応していないものを入れたとか、、です。
上記に当てはまる事柄がなく解決できない場合は、
私が回答できるか分かりませんが、画像を掲示されるとわかり易いと思います。
簡単な画像作成手順
Shift+Windowsキー+Sキー で Window表示範囲を選択
画像ソフトの新規キャンパスにペースト、必要に応じて加工し画像保存、 画像添付でUP
あと、最近疎くてごめんなさい。
Microsoft 365 mos ってどのバージョン?
くりかえしのご教示ありがとうございます。
職場に行くのが不定期なのですが、今週中にいって画像をアップするようにします。
>アドインや個人用マクロブックPERSONAL.XLSBの可能性があります
職場でVBAを作成できるのは私ひとりですので、この可能性はないと思います。
No.2
- 回答日時:
ごめんなさい。
ご質問文読み間違えました。#1忘れてください。
>ソースにはDecareステートメントはありません。
>メッセージもエディタに表示されています。
エディタのどこに表示されているのでしょう?
その表示?(デバッグ)? を書き換えられるなら、
#If VBA7 And Win64 Then
Private Declare PtrSafe Function BeepAPI Lib "kernel32.dll" Alias "Beep" _
(ByVal dwFreq As LongPtr, ByVal dwDuration As LongPtr) As Long
#Else
Private Declare Function BeepAPI Lib "kernel32.dll" Alias "Beep" _
(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
#End If
環境がそろっていないので検証していません。
早速のご教示ありがとうございます。
>エディタのどこに表示されているのでしょう?
>その表示?(デバッグ)? を書き換えられるなら、
Declare Function BeepAPI Lib "kernel32.dll" Alias "Beep" _
(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
↑
VBAエディタの上部に赤色で表示されており、エディタでは修正できません。
No.1
- 回答日時:
こんばんは、
違ってらごめんなさいね。
Declare PtrSafe Function ・・・で解消されますでしょうか?
ちゃんと確認していないので、参考サイトを
https://excel-databace.hatenablog.com/entry/64bi …
早速のご教示ありがとうございます。
>Declare PtrSafe Function
これで解消されると思うのですが、そもそもソースにDeclareという単語がありません。ですのでどう追加すれば良いのかがわからないのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) excel vba 参照渡しと値渡し 2 2022/04/27 10:45
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Excel(エクセル) 【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法 4 2022/12/08 20:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページをつくろうと思...
-
ドラッグしたときに選択状態に...
-
onMouseoverで画像が特定の場所...
-
メニュー作成方法を教えて下さい。
-
画像の貼り付け
-
画像が変わりません;教えて下...
-
代替テキストを素早く表示
-
HTMLだけで画像をクリックして...
-
HP作成時の確認について
-
HPに画像をのせたい
-
datepickerを使ってカレンダー...
-
onmouseoverに複数の命令を書き...
-
小さな画面を表示する方法
-
バナーのURLについて
-
form以外でのpostってできますか?
-
HTMLとPERLの関係について教え...
-
バナーの貼り方とバナーにリン...
-
カーソルを合わせてイメージの...
-
areaタグのマウスオーバー時に枠線
-
アルバムをめくるように、画像...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スライドショーの上にロゴマー...
-
クリックしても、リンクに飛ば...
-
IMGタグでTIFF画像を表示
-
ボタンを押したままにする。
-
バナーの貼り方とバナーにリン...
-
form以外でのpostってできますか?
-
背景が透明なリンクボタンで、...
-
クリッカブルMAP領域が分かる様...
-
イメージマップを貼った画像の...
-
タイトルバーに画像を入れるHTM...
-
WEBサイトの一部コンテンツがス...
-
期間ごとに画像表示を切り替え...
-
<area></area> 部分にボーダー...
-
thickboxでcloseボタン右上配置...
-
複数のボタンで1つのエリアに...
-
HTMLだけで画像をクリックして...
-
windowsは画像にマウスオンで画...
-
onmouseoverに複数の命令を書き...
-
マウスオンの画像の切り替え
-
携帯用HPのダウンロードページ...
おすすめ情報