[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームのテキストボックス』(数式だらけ)
こんにちは。よろしくおねがいします。
今、ユーザーフォームにて色々とてこずってます。
テキストボックス同士の計算は、セルでの計算と同じ
計算式は使えないのですか?
例えば、
Private Sub TextBox4_Change()
If ComboBox12 = "円柱" Then TextBox7 = Format(3.1415926 / 4 * Val(TextBox3.Value) ^ 2 * Val(TextBox4.Value), "0.00") ElseIf ComboBox12 = "六角形" Then TextBox7 = sqrt(2) / 1 ・ ・ ・ ・ ・ End If End Sub
と続けたいのですが、セルで使える「SQRT」と「PI()」が
使えなくて困っています。
ComboBox12には「円柱、六角形、六角穴、小判」など体積計算を
しようとする項目が並んでいます。
その項目を判定して計算式をしたいのですがどなたか
いい方法を教えてください。
色々検索はしたのですが、ヒットしなかったのでお願いします。
< 使用 Excel:unknown、使用 OS:unknown >
PIに関して。
Sub test() MsgBox WorksheetFunction.Pi MsgBox Application.Pi End Sub (OK) 2021/07/01(木) 16:31
SQRTは
Sqr(3) のような感じで出せます。 他の関数もɤさんのコメントを参考に調べてみてください。 (OK) 2021/07/01(木) 16:35
参考になるか分かりませんが。
[[20110309095643]] 『正五角形・正六角形の描き方』(韋駄天」
どこが関係あるんじゃい?というツッコミは無しで。 (OK) 2021/07/01(木) 16:41
OKさんの
>WorksheetFunction.Pi
を使用したらすんなりいけました。
平方根の方は後日検証してみたいと思います。
γさん
QAさん
ありがとうございました。
また困ったら質問させていただきます
(数式だらけ) 2021/07/01(木) 17:21
セルに数式として入力するのも、だたの文字列。
なので、文字列を作って、セルのFormulaプロパティに数式を設定して、
エクセル君に計算させるのも一案ですが、
エクセルの「文字列を読み取って数式と認識して、計算結果を返す」という機能を、
使うのは、
「Evaluateメソッド」という命令になります。
つまり文字列を作って、それをエクセルに評価させればよいかと思います。
https://excel-ubara.com/excelvba4/EXCEL_VBA_424.html
https://www.excel-chunchun.com/entry/excel-vba-evaluate
もちろん、大量の計算をする場合は、
大量の計算をするように作られたエクセルをがっつり利用しない手はないので、
シート上に書き込んでエクセル君に計算させた方がいちいちVBAで計算するより、
速く処理できます。
ユーザーフォームは見せるだけなので、
裏でどんなことをしようと関係ないので、
使えるものは使ってやると開発も楽になるかと思います。
Private Sub TextBox4_Change()
Dim sFormula As String
Select Case ComboBox12.Value Case "円柱": sFormula = "pai()/4*" & TextBox3.Value & "^2*" & TextBox4.Value Case "六角形": sFormula = "SQRT(2)/1"
End Select
MsgBox Evaluate(sFormula)
End Sub
(まっつわん) 2021/07/01(木) 17:22
まだまだ初心者なので少しずつ調べながら勉強したいと思います。
少しまた質問です。
TextBox10 = WorksheetFunction.Degrees(atan(2 * Val(TextBox9.Value) / Val(TextBox5.Value)))
ATANを計算させたいのですが、Worksheetfunctionnを頭につけても
できませんでした。
何か間違っていますか?
(数式だらけ) 2021/07/02(金) 09:29
手入力でしたら候補がでてきたのはWorksheetFunction.SqrtPiで
おそらく違うのだろうと判断しました。
(数式だらけ) 2021/07/02(金) 10:08
>WorksheetFunction.Sqr(3)ではエラーがでて無理でした。
ただの Sqr(3)
(半平太) 2021/07/02(金) 10:29
変更したらけいさんできました。
ATANの方はどうしたら計算できますか?
(数式だらけ) 2021/07/02(金) 10:48
(γ) 2021/07/02(金) 11:43
色々調べて試したら
[ATAN」ではなく「Atan」でいけました。
お騒がせしました。
(数式だらけ) 2021/07/02(金) 13:30
皆様ありがとうございます。
最後にテキストボックスとコンボボックスをリセットしたいのですが
どうすればよいでしょうか?
色々検索してみると
Private Sub CommandButton6_Click()
Dim Ctrl As Control For Each Ctrl In Controls If TypeName(Ctrl) = "TextBox" Then _ Ctrl.Value = "" Next Ctrl End Sub
これでテキストボックスはできたのですが
コンボボックスはヒットしませんでした。
どうかよろしくお願いします
(数式だらけ) 2021/07/02(金) 16:07
「リセット」とは?
登録アイテム全てをコンボボックスから削除、なら、
Me.ComboBox1.Clear
何も選択されてない状態、なら、
Me.ComboBox1.ListIndex = -1 (OK) 2021/07/02(金) 16:33
解り難い説明ですいません。
コンボボックスを選択していない状態(空白)といえば
分かっていただけるでしょうか?
Me.ComboBox1.ListIndex = -1
でもいけたのですが、一気に選択されていない状態にするには
どうすればよいでしょうか?
よろしくお願いします。
(数式だらけ) 2021/07/02(金) 16:56
Private Sub CommandButton6_Click()
Dim Ctrl As Control
For Each Ctrl In Controls If TypeName(Ctrl) = "TextBox" Then Ctrl.Value = "" ElseIf TypeName(Ctrl) = "ComboBox" Then If Ctrl.ListCount <> Then Ctrl.ListIndex = -1 End If Next Ctrl End Sub (OK) 2021/07/02(金) 17:19
>If Ctrl.ListCount <> Then Ctrl.ListIndex = -1
↓の間違いでした。
If Ctrl.ListCount <> 0 Then Ctrl.ListIndex = -1 (OK) 2021/07/02(金) 17:20
>If Ctrl.ListCount <> 0 Then Ctrl.ListIndex = -1
コンボボックスにリストが格納されてなくてもCtrl.ListIndex = -1 で行けるようです。
If Ctrl.ListCount <> 0 Then Ctrl.ListIndex = -1 を Ctrl.ListIndex = -1 に置き換えてください。
※そのままでもエラーにはなりません。 (OK) 2021/07/02(金) 17:42
OKさんありがとうございます。
ループの中に入れたら思い通りに動きました。
ありがとうございました。
(数式だらけ) 2021/07/05(月) 08:50
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.