- ベストアンサー
#If True Then の # って何??
#If True Then #Else #End if というソースを見たときがあるのですが、何がTrueなのかさっぱり 分かりません。どなたか優しく詳しく例をあげて教えてくださいませんか?
- GBSGBS
- お礼率36% (370/1012)
- Visual Basic
- 回答数4
- ありがとう数2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 条件付きコンパイルのためのコードです。 バージョンによって実行ファイルを変更したい場合などに、処理を分岐します。 詳細は、 「条件付きコンパイル」、「#Ifディレクティブ」 などのヘルプを参照して下さい。 なお、質問欄の例では、条件式が「True」ですので、必ず最初の処理(#Elseの前)を行います。 過去に同様の質問もありました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=227374
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17068)
(プリプロセッサ機能を用いた)条件付コンパイル。 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)
どこに書かれてあったものかは わかりませんが、 私もサンプルだと思います。 Trueは 予約語なので 変数などに使うことができません。 if文の使い方といった感じですね。
お礼
よく分からないのですが、 一応動いているようです。 条件付コンパイルについて調べてみたいと思います。 ありがとうございました。
- nagare
- ベストアンサー率33% (280/831)
#がついてるのでコメントですよ (雛形を書いただけでは?)
関連する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とはどういった意味になるのでしょうか?
- ベストアンサー
- Visual Basic
- エクセル・マクロで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 宜しくお願いします。
- ベストアンサー
- Visual Basic
- 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文はちゃんと存在しているにもかかわらず、またほとんど同じ記述の後半ではエラーが出ないというのに、なぜこのようなエラーが出るのかわかりません。 なにか勘違いをしているのでしょうか。
- ベストアンサー
- Excel(エクセル)
- エクセル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文の使い方が間違っているんだとは思いますが、どこがどう 間違っているのがよくわかりません。 ご教授いただけないでしょうか?
- ベストアンサー
- Visual Basic
- エクセル 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』の場合は何をもって真となるのでしょうか? よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- 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もメッセージを表示させたいのですが、 マッチバイトみたいなのってありますか?
- ベストアンサー
- オフィス系ソフト
お礼
サンプルではないです。 実際のプログラムに記述されています。 maruru01さんの回答が一番的を射ていると思います。 的を得る × 的を射る ○