エクセルのVBAで下記のようにすると
テキストボックス1=10,テキストボックス2=20の値を入力すると
セル"A1"に1020と表示されます。合計を求めるにはどうすればよろしいですか?
 ―・*・/は、正しい答えが表示されます。

Private Sub InputBtn_Click()

Worksheets("Sheet1").Range("A1") = TextBox1.Text + TextBox2.Text

End Sub

A 回答 (1件)

算術演算をしたい場合は、



Worksheets("Sheet1").Range("A1") = Val(TextBox1.Text) + Val(TextBox2.Tex)

とします。
他の演算がうまく言ったのは、エクセルが気を利かせてくれて算術演算を実行してくれたにすぎませんので、-*/の場合でもVal()で一度文字列→数値の変換をするようにして下さいね。
+の場合は、文字列の連結という機能があるので、気を利かせてくれなかったんです。

では。
    • good
    • 0
この回答へのお礼

ありがとうございました。
お蔭様で仕事が先に進めます。(^o^)大変助かりました。m(_ _)m

お礼日時:2001/03/30 13:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QPrivate Sub Worksheet_Calculate()のことでお聞きします

いつもgooの皆さんに大変お世話になっております
マクロの勉強を初めて2ヶ月の者です

Private Sub Worksheet_Change(ByVal Target As Range)にマクロを書いているのですが
「特定のセル範囲が変更されたときに処理を実行する」は分かるのですが
特定のセル範囲が変更されなくても、例えば、セルの値がインストールされているアドインで
変化した時の処理はどこに書いたらいいのでしょうか?

今現在、H列のTarget.RowとJ列のTarget.Rowにはアドインで、機器の温度が表示されていますが
この2点の温度変化で
Application.Speech.Speak "温度接近", True
などどやりたいのですが、Private Sub Worksheet_Calculate()に書けばいいのでしょうか
その場合、Private Sub Worksheet_Change(ByVal Target As Range)内の
Target.Row等の値はどうやったらPrivate Sub Worksheet_Calculate()で使えますか?
それとも、もしかしたら標準モジュールに書くのでしょうか?

うまく説明できていませんが、どなたか教えてください

いつもgooの皆さんに大変お世話になっております
マクロの勉強を初めて2ヶ月の者です

Private Sub Worksheet_Change(ByVal Target As Range)にマクロを書いているのですが
「特定のセル範囲が変更されたときに処理を実行する」は分かるのですが
特定のセル範囲が変更されなくても、例えば、セルの値がインストールされているアドインで
変化した時の処理はどこに書いたらいいのでしょうか?

今現在、H列のTarget.RowとJ列のTarget.Rowにはアドインで、機器の温度が表示されていますが
この2点の...続きを読む

Aベストアンサー

こんばんは。

今回の質問は、ご質問者さんには、別のイベントというか、紹介しましたね。その中に含まれていたかもしれません。

今回の件は、マクロを勉強して2ヶ月の人の話ではなく、3年やっても、5年やっても知らない人は知らないことで、かなりハイレベルというか、古めかしいというか、ほとんど知られていない技術だと思います。こういう話は、1冊の本にもなっています。本来、計測メーカー側の専門業者に頼んでしまったほうが早い気もします。たぶん、彼らは、公表はしていませんが、それ専用のVBA用のマクロを持っているはずです。

>特定のセル範囲が変更されなくても、例えば、セルの値がインストールされているアドインで
>変化した時の処理はどこに書いたらいいのでしょうか?

ふつうは、どこでもよいので、
=Now()
という式を書いて、
Private Sub Worksheet_Calculate()
に、イベントを拾わせるわけです。
しかし、少し、工夫が必要で、時々、これが困った動きをします。

Calculate のイベントが、ワークブック全体に働いてしまい、どこのシートを使っても、Calculateイベントが動いてしまいます。この方針で話が本格的になった時に、この対処法は、あらためて紹介します。

>(Worksheet_Change)のTarget.Row等の値はどうやったらPrivate Sub Worksheet_Calculate()で使えますか?

単に、モジュール変数を使って橋渡しするのか、それとも、同時で働くということなら、 Worksheet_Calculateのイベントでなくてもよいはずです。どのように使うのか、こちらではわかりかねます。本来、別の働きをするものです。もちろん、キーで入力した際は、Worksheet_Calculateのイベントは、起動します。

>Application.Speech.Speak "温度接近", True
>などどやりたいのですが、Private Sub Worksheet_Calculate()に書けばいいのでしょうか

ActiveX コントロールで入ってきた値が、どのように加わっていくのかにもよりますが、セルの位置は、Worksheet_Changeイベントのようにセルの位置は感知しませんから、インプットの場所が動いていくのでしたら、マクロで最後尾を探さなくてはなりません。

>それとも、もしかしたら標準モジュールに書くのでしょうか?
同様のコマンドで、標準モジュールに書く方法もあります。とても古い方法で、オブジェクト・ウィンドウにも出てこないはずです。しかし、まだ、同様の働きはしますが、今は、シートモジュールが主流になっています。

こんばんは。

今回の質問は、ご質問者さんには、別のイベントというか、紹介しましたね。その中に含まれていたかもしれません。

今回の件は、マクロを勉強して2ヶ月の人の話ではなく、3年やっても、5年やっても知らない人は知らないことで、かなりハイレベルというか、古めかしいというか、ほとんど知られていない技術だと思います。こういう話は、1冊の本にもなっています。本来、計測メーカー側の専門業者に頼んでしまったほうが早い気もします。たぶん、彼らは、公表はしていませんが、それ専用のVBA用の...続きを読む

QエクセルのPrivate Sub Worksheet_Change

エクセルのPrivate Sub Worksheet_Change

すいません。どうやっても動作しません。
シート1のB5のセルに英数字を入力しエンターを押して確定すると
シート2のC列から同レコードを検出し、その検出された行のB~E列の値を
シート1のH4、H5、H6、J7に値をかえします。
またB5の値はH8にも表示されます。
データがあった場合には、シート1のH4、H5、H6、J7に値が表示されています。
シート2にデータが無い場合はシート1のH4、H5、H6、J7には「#N/A」と表示されます。
ここまでは関数と計算式なのでマクロではありません。

ここでフォームで作成した「印刷ボタン」をクリックします。
すると「印刷ボタン」に登録したマクロが起動します。
シート1のセルG4~J11までが印刷されます。

マクロの内容は

シート1のH4に「#N/A」が表示されている場合はメッセージボックスで
「データがありません」と出ます。印刷は実行されません。

H4が「#N/A」以外の場合は印刷が実行されますがその前に
シート3のセルA1の数値をプラス1してシート3のB2に、セルA1の値の先頭にAを付けて
表示します。(セルA1が0002ならB1はA0002)
それがシート1のH12に表示されます。(H12への表示は計算式で対応)
印刷ボタンを押すごとにシート3のセルA1は1づつ繰り上がります。
シート1のH12の値が変わってから印刷がされます。
と同時に
シート1のセルB5がDELETEされセルB5がアクティブになります。
結果シート1のH4、H5、H6、J7、H8は「#N/A」が表示されます。
H12はクリアされません。
印刷終了後にもセルの値が変化する事になります。

もう一つフォームで作成した「初期化」というボタンがあります。
これをクリックするとマクロが起動して
シート1のセルB5がDELETEされセルB5がアクティブになります。
よってシート1のセルH4、H5、H6、J7、H8も「#N/A」に値が変わります。

ここまでは完璧に動作しています。
でこの「印刷ボタン」を押してマクロが起動ではなく
セルB5に入力しエンターを押したらマクロを起動させたいです。

Private Sub Worksheet_Change(ByVal Target As Range)
を利用しましたが動作しません。

シート1のB5のセルに入力しエンターを押すと
シート1の一部のセルの値が変化。
印刷ボタンを押すと、シート3の一部のセルの値が変化し
その後再びシート1のセルの一部が変化し印刷が開始され
その後シート1のセルB5がDELETEされアクティブに。
それに伴いシート1の一部のセルの値が変化する。
マクロが起動すると、シート1とシート3のセルの値が数回変化します。

このような場合はPrivate Sub Worksheet_Change(ByVal Target As Range)で
セルB5の入力後エンターで確定しての上記のマクロ起動は無理なのでしょうか?

エクセルのPrivate Sub Worksheet_Change

すいません。どうやっても動作しません。
シート1のB5のセルに英数字を入力しエンターを押して確定すると
シート2のC列から同レコードを検出し、その検出された行のB~E列の値を
シート1のH4、H5、H6、J7に値をかえします。
またB5の値はH8にも表示されます。
データがあった場合には、シート1のH4、H5、H6、J7に値が表示されています。
シート2にデータが無い場合はシート1のH4、H5、H6、J7には「#N/A」と表示されます。
こ...続きを読む

Aベストアンサー

application.EnableEvents = False
処理
application.EnableEvents = True
ちゃんと上記の様にしていますか?

EnableEvents入れてなかったらシート1の値変えた時点で
再度Changeイベントが頭から始まりますよ。
処理中にエラーになるとEnableEventsがFalseのままになり
イベントが発生しなくなるのでOn error gotoとか書いた方がいいですよ。
あとデバッグは覚えた方が良いと思います。

Q日付 =TEXT(C2,"m月d日(aaa)")が=TEXT([@月日],"m月d日(aaa)")

日付を文字列に変換するため
=TEXT(C2,"m月d日(aaa)
と入力していたものが
今見ると 
=TEXT([@月日],"m月d日(aaa)")
となっていました。
数式バーをクリックすると[@月日]は、
画像のように青くなっています。
なぜこうなるのですか

Aベストアンサー

テーブルの構造化参照になっているだけですね。

Excel2007以降 テーブル書式は基本中の基本の使い方なので必ず
勉強して使えるようになっておくべきだと思います。

Q【エクセル】テキストボックスのサイズを他のテキストボックスにもコピーできますか?

こんにちは、みなさん!!

AとういうテキストボックスのサイズをBとういう
テキストボックスのサイズにコピーできますか?

例えば、テキストボックスAの幅が3高さが1だとします。
テキストボックスBのサイズをAと同じにするには、書式
設定から、高さ幅3高さ1と入力して同じサイズのテキスト
ボックスにします。

これを、もう少し簡単にできる方法はありませんか?

ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

すでにあるテキストボックスなら、
Shiftを押しながら選択すると、
A、Bのテキストボックスを同時に選択することができます。
複数同時に選択したところで、書式設定すればいいと思います。

QPrivate Sub Workbook_open()で、マクロが止まってしまいます

よろしくお願いします。昨年はgooの皆さんに大変お世話になりました
お陰様でマクロもエクセルも大いに進歩できました
今年もよろしくお願いします

質問です
Private Sub Workbook_open()で、マクロが止まってしまいます
原因は
'***********************

'***********************
で、はさまれた部分にあるようです(REM文にするとマクロは止まりません)
なぜマクロが止まってしまうのでしょうか?
どなたか教えてください

Private Sub Workbook_open()
'実行順序はWorkbook_open()がauto_openより先
With Sheets("T60012")
'エクセルopen時に前回close時のデータは全部クリアー(終わったことだから比較は意味がない)
.Range("AP42:AP62").ClearContents '管理上限オーバー 旧温度クリアー
.Range("BA42:BA62").ClearContents '管理下限アンダー 旧温度クリアー
.Range("CE42:CE62").ClearContents 'OK NOの文字 デフォルトは空白
'****************************
Application.EnableEvents = True
Application.Speech.Speak "ボリュームチェック、ボリュームチェック", True
Application.EnableEvents = False
'****************************

End With
End Sub

よろしくお願いします。昨年はgooの皆さんに大変お世話になりました
お陰様でマクロもエクセルも大いに進歩できました
今年もよろしくお願いします

質問です
Private Sub Workbook_open()で、マクロが止まってしまいます
原因は
'***********************

'***********************
で、はさまれた部分にあるようです(REM文にするとマクロは止まりません)
なぜマクロが止まってしまうのでしょうか?
どなたか教えてください

Private Sub Workbook_open()
'実行順序はWorkbook_open(...続きを読む

Aベストアンサー

こんにちは!

>Application.EnableEvents
のTRUEとFALSEが逆なのでは?

お示しのコードでは「イベントを止める」で終わっていますので
そこでマクロそのものが止まってしまうと思います。

あくまで個人的見解ですが
今回のコードでは
>Application.EnableEvents = False

>Application.EnableEvents = True
の2行は不要な気がします。
(検証はしていません)

一般的にはChangeイベントなどで無限ループに陥るのを防ぐ場合、
この使い方をすることが多いと思います。

※ 万一エラーでマクロが止まったのであれば
Application.EnableEvents = True
の1行だけの別マクロで戻してあげないと
お示しのプロシージャそのものがうんともすんとも言わなくなるのでは?
(これも未検証なので無意味だったらごめんなさい)m(_ _)m


このカテゴリの人気Q&Aランキング

おすすめ情報