LoginSignup
4
0

More than 3 years have passed since last update.

#IF VBA7 ってどういうときに必要なのか?

Last updated at Posted at 2020-07-25

VBA7の意味をわかって、コピペしてますでしょうか?

インターネットでExcel VBA上のWindows APIのサンプルコードを探すと、#If VBA7 を使ったものをよく見かけます。

ソースを公開している方は、どういう人がみても使えるように#If VBA7を使って、広い互換性をもたせているのですが、それをみた利用者側で無条件にコピーして使うのは、やめたほうがいいんじゃないかと思って、この記事を投稿しました。

ざっくりいうと、#If VBA7 は Excel2010以上だったら です。
もう2020年です。自分用や仲間内で使うマクロで、自分たちがExcel2003やExcel2007を使っていないのだったら、もうVBA7は使わずにすっきりさせたほうがいいと思います。

Excel2010以上しか想定しないのなら

#If VBA7 Then
   Declare PtrSafe Function FindWindow Lib "user32" _
      Alias "FindWindowA" ( _
      ByVal lpClassName As String, _
      ByVal lpWindowName As String) As LongPtr

#Else
   Declare Function FindWindow Lib "user32" _
      Alias "FindWindowA" ( _
      ByVal lpClassName As String, _
      ByVal lpWindowName As String) As Long

#End If

とするのではなく


Declare PtrSafe Function FindWindow Lib "user32" _
  Alias "FindWindowA" ( _
  ByVal lpClassName As String, _
  ByVal lpWindowName As String) As LongPtr  

とすべきだと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0