[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『電卓』(でんちゃん)
皆さんのお力をお貸しください。
Sub Sample() Dim ReturnValue
ReturnValue = Shell("CALC.EXE", 1) AppActivate ReturnValue End Sub
上記のコードで電卓を起動させる事はネットで発見致しました。 電卓の答えを「UserForm1.TextBox4」に入れたいのですが、どのようにすればよいのでしょうか? そもそもそんな事は可能なのでしょうか? 宜しくお願い致します。
WindowsXP Excel2007
過去ログは探してみましたか? 「電卓」で検索した中に↓のような過去ログがありましたが。
[[20060409151555]] 『電卓の計算結果』(banzai)
WindowsXP,Excel2002ではうまくいきました。 (カリーニン)
私なら、テキストボックス内で計算してしまうかな。 Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) On Error Resume Next Me.TextBox4.Value = Evaluate(Me.TextBox4.Value) If Err.Number <> 0 Then MsgBox "式が不完全です" End If On Error GoTo 0 End Sub 計算式をテキストボックスに入力して他のコントロールにフォーカスが移ると 計算します。ワークシート関数もある程度は使えます。 (みやほりん)(-_∂)b
返事が遅くなりましてすいませんでした。
>カリーニンさん ありがとうございます。
>みやほりんさん テキストボックス内で計算が出来るとは知りませんでした。 勉強になります。 うまくいきました。ありがとうございました。
また、何かありましたら是非お願い致します。
(でんちゃん)
この質問の
Sub Sample() Dim ReturnValue
ReturnValue = Shell("CALC.EXE", 1) AppActivate ReturnValue End Sub
を参考にして、シート上に電卓が表示するように出来ましたが 計算結果を入力しようとセルを選択すると電卓が 画面上から消えて しまいます。 シートのどのセルを選択しても、電卓が表示されているようには どうのようにすれば宜しいでしょうか。 教示をお願いします。 (光)
>シートのどのセルを選択しても、電卓が表示されているようには >どうのようにすれば宜しいでしょうか。
文字通り受け取れば、↓のようなことになりますが、もちろん違いますよね?
Private Sub Worksheet_SelectionChange(ByVal Target As Range) AppActivate "電卓" End Sub
これはシートから電卓にフォーカスが移ってしまうし。 APIを駆使すれば電卓にフォーカスを移さずに電卓表示しながらシート編集 も出来る、ということも可能なのかもしれませんがわかりません。
(カリーニン)
>シートのどのセルを選択しても、電卓が表示されているようには >どうのようにすれば宜しいでしょうか
直接の回答ではありませんがEXCELで電卓(CALC.EXE)を使うツールを利用されたらどうでしょう。 簡単です。 http://www.vector.co.jp/soft/win95/business/se411231.html (yama)
電卓が常に手前に表示なら、
Option Explicit Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _ lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal X As Long, ByVal Y As Long, _ ByVal cx As Long, ByVal cy As Long, _ ByVal wFlags As Long) As Long Public Const walways = -1 '常に手前にセット Public Const wreset = -2 '解除 Public Const wdisp = &H40 '表示する Public Const w_SIZE = &H1 'サイズを設定しない Public Const w_MOVE = &H2 '位置を設定しない Sub Sample() Shell "CALC.EXE", 1 Call SetWindowPos(FindWindow(vbNullString, "電卓"), _ walways, 0, 0, 0, 0, wdisp Or w_SIZE Or w_MOVE) End Sub
ichinose
教示下さった皆さん有難うございます。
ichinoseさんへお伺いします。
Option Explicit Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _ lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal X As Long, ByVal Y As Long, _ ByVal cx As Long, ByVal cy As Long, _ ByVal wFlags As Long) As Long Public Const walways = -1 '常に手前にセット Public Const wreset = -2 '解除 Public Const wdisp = &H40 '表示する Public Const w_SIZE = &H1 'サイズを設定しない Public Const w_MOVE = &H2 '位置を設定しない
の部分も標準モジュールへ作成すれば宜しいでしょうか。 (光)
>の部分も標準モジュールへ作成すれば宜しいでしょうか。 そうですよ!! 何か問題が発生しましたか?
私の環境では、正常に作動しています(Win2000、Excel2002)
ichinose@window7だと何かあったかなあ・・・。
ichinoseさんへ
解決しました。有難うございました。 (光)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.