• ベストアンサー

#If True Then の # って何??

#If True Then #Else #End if というソースを見たときがあるのですが、何がTrueなのかさっぱり 分かりません。どなたか優しく詳しく例をあげて教えてくださいませんか?

  • GBSGBS
  • お礼率36% (370/1012)

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 条件付きコンパイルのためのコードです。 バージョンによって実行ファイルを変更したい場合などに、処理を分岐します。 詳細は、 「条件付きコンパイル」、「#Ifディレクティブ」 などのヘルプを参照して下さい。 なお、質問欄の例では、条件式が「True」ですので、必ず最初の処理(#Elseの前)を行います。 過去に同様の質問もありました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=227374

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=227374
GBSGBS
質問者

お礼

サンプルではないです。 実際のプログラムに記述されています。 maruru01さんの回答が一番的を射ていると思います。 的を得る × 的を射る ○

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

(プリプロセッサ機能を用いた)条件付コンパイル。 http://www.users.gr.jp/ml/archive/vb/4503.asp http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_e04.htm VB 条件 コンパイルでWEB照会すると少し出てくる。 記号#はC言語の真似?。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.3

どこに書かれてあったものかは わかりませんが、 私もサンプルだと思います。 Trueは 予約語なので 変数などに使うことができません。 if文の使い方といった感じですね。

GBSGBS
質問者

お礼

よく分からないのですが、 一応動いているようです。 条件付コンパイルについて調べてみたいと思います。 ありがとうございました。

  • nagare
  • ベストアンサー率33% (280/831)
回答No.1

#がついてるのでコメントですよ (雛形を書いただけでは?)

関連するQ&A

  • If x < y Then 0 Then ←この書き方の意味は?

    VB6.0の出来たプログラムをVB.NETに移行する為にソースを見ているのですが If x < y Then 0 Then ~処理A~ Else ~処理B~ End If と記述されている部分がありました。 「0 Then」がなければ、xがyより小さい時、処理Aを行い、 それ以外の場合は、処理Bを行うというのはわかります。 この時のThen 0 Thenとはどういった意味になるのでしょうか?

  • エクセル・マクロでIf Thenの使い方

    このような質問は、ルール(エチケット、マナー)違反になるでしょうか? もしそうならお許し下さい。 名前ボックスに表示される名前を、マクロで非表示にし、元に戻す、という操作を次の二つのボタンで実行するように作りました。エクセル2003です。 Private Sub CommandButton1_Click() Dim tname As Name For Each tname In ThisWorkbook.Names tname.Visible = False Next End Sub Private Sub CommandButton2_Click() Dim tname As Name For Each tname In ThisWorkbook.Names tname.Visible = True Next End Sub これを一つのボタンで、If Then Elseを使い実行できるようにしたいのですが If ・・・ Then の間の書き方が分からずうまくいきません。   If Names.Visible = False Then   If ThisWorkbook.Names.Visible = False Then If ThisWorkbook.tname.Visible = False Then Private Sub CommandButton3_Click() Dim tname As Name If Names.Visible = False Then 'これでは駄目 For Each tname In ThisWorkbook.Names tname.Visible = False Next Else For Each tname In ThisWorkbook.Names tname.Visible = True Next End If End Sub 苦し紛れにこんなことをやってごまかそうとしているのですがこれって邪道ですしかっこうわるいですよね。 Private Sub CommandButton3_Click() Dim tname As Name If Range("g1").Value = " " Then   For Each tname In ThisWorkbook.Names   tname.Visible = False   Next Range("g1").Value = "1" Else   For Each tname In ThisWorkbook.Names   tname.Visible = True   Next Range("g1").Value = " " End If End Sub ど素人ですがよろしくご教導ください。

  • #If Then ~ #Else ~ #End If(エクセルVBA)

    #If Then ~ #Else ~ #End If って何ですか? また、VBAのヘルプで検索する方法ってどうすればいいのですか? どなたか?宜しくお願い致します。

  • 「:」について

    制御構造の場合、select caseとif elseの後は「:」をついか、一行でソースを書くの意味ですか。 例: If OPTO104(1).Value = True Then    OPTO104(1).SetFocus Else: OPTO104(2).SetFocus End If 宜しくお願いします。

  • End Ifは不要な場合もある?

    Excel2010使用で下記のVBAのコードを書きました。 Sub イフとエンドイフは組ではなかったのか()  Dim Flag As Boolean  Dim S As Worksheet   For Each S In Worksheets    If S.Name = "合計" Then Flag = True '   Else '    Flag = False '   End If   Next S   If Flag = True Then    MsgBox "「合計」というシートはすでに存在します"   Else    Worksheets(1).Copy after:=Worksheets(Worksheets.Count)    ActiveSheet.Name = "合計"   End If End Sub 前半の >' Else >' Flag = False >' End If の部分があると「Elseに対応するIfがありません」というエラーが出ます。 Elseに関する記述だけをコメントアウトすると「End Ifに対応するIfブロックがありません」というエラーが出ます。 この部分をコメントアウトすればきちんと動作するのですが、If文はちゃんと存在しているにもかかわらず、またほとんど同じ記述の後半ではエラーが出ないというのに、なぜこのようなエラーが出るのかわかりません。 なにか勘違いをしているのでしょうか。

  • エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?

    ワークシート関数で書けば =IF(OR(F18=0,AND(F15>0,F16>0)),TRUE)です。 これをVBAで書こうとして If Sheet1.Range("F18") = 0 Or Sheet1.Range("F15") > 0 And Sheet1.Range("F16") > 0 Then MsgBox True Else MsgBox False End If とやってみたのですが、正しくないようです。 どのように書けばいいのでしょうか?

  • if文からcase文への置き換え

    ピクチャボックスをクリックしたら、チェック ボックスがチェックされるメソッドを作りたいと 思っています。 Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click,PictureBox2.Click 'ここから If sender Is PictureBox1 Then If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If ElseIf sender Is PictureBox2 Then If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End If 'ここまで End Sub 上記のif文をCase文に置き換えたくて、 'ここから Select Case sender Case PictureBox1 If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If Case PictureBox2 If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End Select 'ここまで 上記のように書き換えたのですが、エラーが出てしまいます(ビルドは通るのですが)。 Case文の使い方が間違っているんだとは思いますが、どこがどう 間違っているのがよくわかりません。 ご教授いただけないでしょうか?

  • エクセル IF について!

    UserForm上にTextBoxとコマンドボタンがあり、TextBoxに数字を入れコマンドボタンをクリックすると'A.xlsをセットしてAシートの使用行を格納し検索して他のTextBoxにも反映させていくやり方でマクロを記述しています。そこでTextBoxに入力した数字がない場合はMsgBox”この数字はありません”という形にしたいのですが・・・どのようにすれば良いのか教えて下さい。 If Me.Controls("TextBox1" & Cnt).Value = "" Then MsgBox "呼出したい数字を入力して下さい" Exit Sub End If Set wbMyBook = Workbooks(ThisWorkbook.Name) If MsgBox("以前の記録を呼び戻しますか?", vbOKCancel) = vbOK Then Application.ScreenUpdating = False strMyBookPath = ThisWorkbook.Path If Dir(strMyBookPath & "\" & k1Name) <> "" Then 'あった場合そのブックが空いているか確認する。 flag = False For Each wb In Workbooks '開いていればTrue,開いていなければFalseを設定 If wb.Name = k1Name Then flag = True Exit For End If Next wb 'ブックが開いていなかった場合、ブックを開ける。 If flag = False Then Workbooks.Open strMyBookPath & "\" & k1Name End If Set k1 = Workbooks(k1Name) Set SH1 = k1.Worksheets("Sheet1") Else MsgBox WDName & "が存在していません。設置してください。", vbExclamation, "確認してください" Exit Sub End If lngYcnt_K = SH1.UsedRange.Rows.Count flag = False For lng = 1 To lngYcnt_K If CStr(TextBox1.Text) = CStr(SH1.Cells(lng, 1)) Then flag = True lngNumber = lng Exit For End If Next lng If flag = True Then TextBox3.Value = SH1.Cells(lngNumber, 2) '氏名 End If If SH1.Cells(lngNumber, 3) = "男" Then OptionButton1.Value = True ElseIf SH1.Cells(lngNumber, 3) = "女" Then OptionButton2.Value = True Else OptionButton1.Value = True OptionButton2.Value = False End If MsgBox " 記録を呼び戻しました" Else MsgBox"確認必要"⇒ここにもし数字が違っていたら表示させたいのですが・・・ End If MsgBox " 以前に記録しましたか?" Application.DisplayAlerts = False k1.Close saveChanges:=True Application.DisplayAlerts = True '-------------------------------------------------------------------------- '画面更新ON Application.ScreenUpdating = False End Sub

  • 条件付きコンパイル: #IF 1 Then と #IF 0 Then

    条件付コンパイルで、 『#If 1 Then』と『#If 0 Then』の条件の違いを教えてください。 『#If ○○○=1 Then』などの場合はわかるのですが、 単に『#If 1 Then』の場合は何をもって真となるのでしょうか? よろしくお願いいたします。

  • IFステートメントで半角でも全角でもtrueとさせ

    IFステートメントで半角でも全角でもtrueとさせるには? Sub test1() Dim str As String str = "ABC"’←全角のA If str Like "*A*" Then ’←半角のA MsgBox "Aがあります" End If End Sub これで、半角Aもメッセージを表示させたいのですが、 マッチバイトみたいなのってありますか?

専門家に質問してみよう