- ベストアンサー
エクセルVBA サブルーチンの使い方
下記コードにて、MSGBOXで88を表示するには、どう変更すればよいですか? Sub aaa() bbb MsgBox b End Sub Sub bbb() b = 88 End Sub
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- VBA コードを中断するには?
下記コードにて、 aaaを実行し、Exit Subのところで実行そのものを終了させたいのですが、このままだとcccのコードが実行されてしまいます。 Exit Subのところをどう変更すればよいのでしょうか? Sub aaa() bbb ccc End Sub Sub bbb() 略 Exit Sub ←ここをどう書けば良いですか? 略 End Sub Sub ccc() 略 End Sub
- ベストアンサー
- Visual Basic
- 【VB.NET】複数のサブルーチンをすべて一気に抜ける方法?
【VB.NET】複数のサブルーチンをすべて一気に抜ける方法? 今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします. 環境:Vista+VB2008 でございます。 例えば下のようなコードがあったといたしまして、 Sub AAA Call BBB End Sub Sub BBB Call CCC End Sub Sub CCC '★ End Sub 特定の条件の時のみ、★マークのところで、動作を終了したい (Sub AAAのEnd Subに移動したい)場合、どのようにすべきでございましょうか?? Exit SubだとSub CCCしか抜けてくれませんし(Sub BBBから実行を続行してしまう)、 フラグ立てだと Public フラグ as string ="" Sub AAA Call BBB If フラグ = "抜ける" then Exit Sub End Sub Sub BBB Call CCC If フラグ = "抜ける" then Exit Sub End Sub Sub CCC If (抜けたい時)then フラグ = "抜ける" Exit Sub End If End Sub のように、コードが少し見にくくなってしまいます。。。 何か他のスマートな方法などございましたら、是非ともご紹介いただきたくお願いいたします。 もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- エクセルVBAでお願いします。
エクセル2002使用です。 セルA1に 日付型で2004/9/25と間違いなく入っています。 その条件で下記のようにコードを打ちました。 Sub test() If Day(Range("A1")) = 30 Then MsgBox "yes" End If End Sub 25=30ならばmsgboxを表示なので、上記の例では表示してはいけないのに表示されます。 ちなみに=を<>不等号にしてもMsgboxが開きます。 おそらく型の問題だと思ったのですが、DAY関数はVariant型のintergerなので問題ないと思うのですが、理由がわかりません。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA 加算演算時のトラブル
事務処理用に準備したVBA処理の数値合計チェックにて本来イコールとなるべきところ、ノットイコールと判定されてしまいます。当該部分を抜き出し、わかりやすくしたものが下記のロジックですが、ここで、test2,test4は結果がイコールとなるものの、test3の場合、ノットイコールとなってしまいます。どなたか、原因につき教えていただけませんか? Dim aaa As Double Dim bbb As Double sub test2() bbb = 16.67 + 16.67 aaa = 33.34 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End Sub Sub test3() bbb = 16.67 + 16.67 + 16.67 aaa = 50.01 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End Sub Sub test4() bbb = 16.67 + 16.67 + 16.67 + 16.67 aaa = 66.68 If bbb = aaa Then MsgBox "OK" Else MsgBox "NE" End If End sub
- 締切済み
- オフィス系ソフト
- エクセル2010のvbaについて
Sub abc() Dim a Set a = Selection If a.Width * 4 / 3 <> 90 And a.Height * 4 / 3 - 1 <> 120 Then MsgBox ("120x90px以外の画像以外は挿入できません") End If End Sub 上のコードを実行するとなぜか120×90以外でも メッセージが表示されなくなります (Msgbox a.Width * 4 / 3は90 Msgbox a.Height * 4 / 3は120と正しく表示されます) 更に高さが1px多くなってしまいます(-1) (高さを調べても121pxではなく120pxでした) たまにvbaをしている時にあるので 回答と原因もお願いします
- 締切済み
- その他MS Office製品
- Excel VBA について教えて下さい
Excel VBA でAccess接続します 今までは Sub aaa() Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;" End Sub のように使っていましたが(単一プロシージャ) Set cn = CreateObject("ADODB.Connection") の部分をパブリックにして Sub bbb() cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;" End Sub 別のプロシージャからも、使えるためには パブリックにするための方法を教えて下さい
- ベストアンサー
- Excel(エクセル)
- 別ブックのFunctionを呼び出し戻り値を取得
こちらの識者の方々にはいつもお世話になっています。 関数の質問です。 タイトルが分かりづらくて申し訳ありませんが、詳細は下記ご参照ください。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ・やりたいこと 別のBookのFunctionを呼び出し、戻り値を取得したい。 同一Book内であれば Module1: Sub aaa() MsgBox bbb End Sub Module2: Function bbb() As String If Date Mod 2 = 0 Then bbb = "余り0" Else bbb = "余り1" End If End Function というような書き方で、"余り0"か"余り1"のメッセージボックスが表示されますが、 Function bbbを別のブックに書き、同じく"余り0"か"余り1"のメッセージボックスが表示させるには、どのようなコードが適していますでしょうか? 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセル:セルの検索
Sheet1のC~G列を検索し、 [AAA]が見つかれば「成功」、見つからなければ「失敗」と表示するコードを作りました。 (実際のコードでは、AAAが見つかったセルBBBの.Addressや.Valueを使いたいので「Set BBB」などという書き方をしています) Dim AAA As String Dim BBB As Range Set BBB = Worksheets("Sheet1").Range("C:G").CurrentRegion.Find(What:=AAA, LookAt:=xlWhole) If BBB Is Nothing Then MsgBox "検索に失敗" Else MsgBox "検索に成功" End If このコードで、C~D列にAAAがある場合は見つかるのですが、 E~G列にAAAがある場合は見つからず「検索に失敗」とメッセージが出ます。 また、 別のシートでも全く同じコードを使っているのですが、こちらは正常に動作します。 上に挙げたコードと違うところは検索範囲がE~I列だというだけです。 上記コードでとあるシートにおいてのみE~G列にある値が検索に引っかからない理由として、 どのようなことが考えられるでしょうか。 保護はかかっていません。 値が微妙に違うということもありません。 大文字小文字、半角全角の指定はしておりませんが、 C列で検索に引っかかった値をそのままG列に移動しただけで見つからなくなります。 なお、AAAに入れているデータは、 Private Sub Worksheet_Change(ByVal Target As Range) End Sub のTarget.Addressで、「$A$20」のような形で入っています。 Sheet1のC~G列に用意している値も「$A$20」のような形で直接書き込んでいます。
- ベストアンサー
- オフィス系ソフト
- Excel VBAで検索(Win2000 Excel2000)
現在、下記のようなコードを書いています。データテーブルの縦と横の検索値を探してその列数と行数を返したいのですが、下記の Sub検索1 と Sub検索2 を1つのSubで実行させるにはどうしたらよいのでしょうか?よろしくお願い致します。 ----------------------------------------- Sub 検索1() Worksheets("Data").Activate Dim x As Integer For x = 3 To 22 If Cells(2, x).Value >= 12 Then MsgBox x Exit Sub End If Next MsgBox "見つかりません" End Sub --------------------------------------------- Sub 検索2() Worksheets("Data").Activate Dim i As Integer For i = 4 To 42 If Cells(i, 2).Value = "A" Then MsgBox i Exit Sub End If Next MsgBox "見つかりません" End Sub
- ベストアンサー
- オフィス系ソフト
- 参照渡し(ByRef)
参照渡しについてわからないのですが Option Explicit Dim buf As String Sub Sample1() buf = "aaa" Call Sample2("bbb") MsgBox buf End Sub Sub Sample2(ByRef a As String) a = "ccc" End Sub を実行すると、msgboxには、aaaが表示されますが、 途中のbbb,cccはどんな意味があるのでしょうか? また、 Sub Sample2(ByRef a As String) を Sub Sample2(a As String) にしてもコードは問題なく動きますが、 ByRefは役に立ってるのですか?
- ベストアンサー
- オフィス系ソフト
- 充電中に時間がしばらくすると、powerが赤点滅、statusがオレンジ点滅、bluetoothが青点灯になる現象について解決方法を知りたいです。
- お使いのパソコンはWindows10で接続はbluetoothまたは無線LANです。
- 関連するソフト・アプリや電話回線の情報は特にありません。
お礼
回答ありがとうございます。 いろいろな方法があるのですね。 今後は教えていただいた方法を基本として、使っていきたいと思います。