Cho em hỏi code tính toán 1 công thức tính trên 1 số textbox của form (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

kegiaumat

Thành viên mới
Tham gia
6/7/08
Bài viết
34
Được thích
0
giả sử em có
Sub thunghiem1()
a = "c+2*d" ' biến a chứa chuỗi có công thức liên quan đến biến c d ..
c = 2
d = 3
End Sub

bây giờ với các giá trị của c , d .. gọi cái công thức chứa trong a để cho ra kết quả. he he em giải thích hơi rườm rà. mong các bác thông cảm. cám ơn các bác đã quan tâm
 
giả sử em có
Sub thunghiem1()
a = "c+2*d" ' biến a chứa chuỗi có công thức liên quan đến biến c d ..
c = 2
d = 3
End Sub

bây giờ với các giá trị của c , d .. gọi cái công thức chứa trong a để cho ra kết quả. he he em giải thích hơi rườm rà. mong các bác thông cảm. cám ơn các bác đã quan tâm

Vầy mới đúng chứ
Mã:
Sub thunghiem1()
  Dim a, c, d
  c = 2
  d = 3
  a = c & "+2*" & d
  MsgBox Evaluate(a)
End Sub
 
Upvote 0
PHP:
Sub thunghiem1(c, d)    
a = c & "+2*" & d   
MsgBox Evaluate(a) 
End Sub

PHP:
Sub Goi()
Thunghiem1 2, 3
End Sub
 
Upvote 0
cảm ơn các bác nhưng ý em hơi khác một tý. biến a là em lấy được thông qua text box.
em có một text box quy định công thức cho các biến c d e.... giờ làm sao cho chạy cái công thức trong text box đó
 
Upvote 0
Các bác cho em xin ý tưởng để viết code cái. cái này em viết là VBA for cad nhưng mà bên cadviet ko có ai hỏi nên chạy sang đây hỏi excel vậy
ý tưởng của em là để tính diện tích các hình
Sub thunghiem1()
<thân hàm thứ 1 để tính diện tích các hình cơ bản tính được DT1 DT2 DT3 ...>
<thân hàm thứ 2 cộng trừ nhân chia các diện tích hình cơ bản trên> cái này được người dùng quy định và được gọi ra,nhập liệu bằng một textbox của form
=> đưa ra kết quả diện tính mà cộng trừ nhân chia trong bước 2
End Sub

bây giờ em đang mắc ở chỗ bước 2 là với công thức được lập ở trong
textbox (biến string) (có thể tạo cho nội dung của textbox này là một hàm con cũng được) làm sao để cho nó chạy rồi đưa ra diện tích tổng
Các bác cố gắng hỉu nha em học văn không qua nổi 5 phẩy nên diễn đạt hơi kém mong các bác thông cảm
 
Upvote 0
Các bác cho em xin ý tưởng để viết code cái. cái này em viết là VBA for cad nhưng mà bên cadviet ko có ai hỏi nên chạy sang đây hỏi excel vậy
ý tưởng của em là để tính diện tích các hình
Sub thunghiem1()
<thân hàm thứ 1 để tính diện tích các hình cơ bản tính được DT1 DT2 DT3 ...>
<thân hàm thứ 2 cộng trừ nhân chia các diện tích hình cơ bản trên> cái này được người dùng quy định và được gọi ra,nhập liệu bằng một textbox của form
=> đưa ra kết quả diện tính mà cộng trừ nhân chia trong bước 2
End Sub

bây giờ em đang mắc ở chỗ bước 2 là với công thức được lập ở trong
textbox (biến string) (có thể tạo cho nội dung của textbox này là một hàm con cũng được) làm sao để cho nó chạy rồi đưa ra diện tích tổng
Các bác cố gắng hỉu nha em học văn không qua nổi 5 phẩy nên diễn đạt hơi kém mong các bác thông cảm

1. Chuỗi là biểu thức Toán học gồm: các số, các biến - 1 ký tự thuộc [a-z], và các toán tử +, -, *, / - không có các hàm như sin, cos, tan?

2. Người dùng nhập chuỗi và cũng người dùng nhập giá trị cho mỗi biến khi gọi hàm? Các giá trị nhập cho biến được nhập theo thứ tự xuất hiện của biến trong chuỗi?

Dưới đây là ví dụ - mới là ý tưởng ban đầu thôi - với các giả thiết cụ thể như trên.
Nếu không đúng ý bạn thì tôi rút lui luôn không tham gia tiếp nữa.

Mã:
Function hichic(ByVal formula As String, Arr()) As Double
Dim k As Long, bien As String
On Error GoTo end_
    Set re = CreateObject("VBScript.RegExp")
    re.IgnoreCase = True
    re.pattern = "[a-z]"
    For k = LBound(Arr) To UBound(Arr)
        If re.test(formula) Then
            bien = re.Execute(formula).Item(0).Value
            formula = replace(formula, bien, Arr(k), , , vbTextCompare)
        Else
            Exit For
        End If
    Next k
    
    formula = replace(formula, ",", ".")
    hichic = Evaluate(formula)
    Exit Function
end_:
End Function

Sub test()
Dim Arr()
    Arr = Array(2, 3, 4)
[COLOR=#0000ff]'   Tính giá trị biểu thức a² + 2ab + b² với a = 2, b = 3[/COLOR]
    MsgBox hichic("a^2+2*A*B+b^2", Arr)
[COLOR=#0000ff]'   Tính giá trị của biểu thức 3,14 * r² với r = 2[/COLOR]
    MsgBox hichic("3.14*r^2", Arr)
[COLOR=#0000ff]'   Tính giá trị của biểu thức a + 2*b - 3*c với a = 2, b = 3, c = 4[/COLOR]
    MsgBox hichic("a+2*b-3*c", Arr)
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Dưới đây là ví dụ - mới là ý tưởng ban đầu thôi - với các giả thiết cụ thể như trên.
Nếu không đúng ý bạn thì tôi rút lui luôn không tham gia tiếp nữa.
Code của siwtom tôi cho là đã đúng 100% với những gì tác giả diễn đạt. Nhưng tác giả tự diễn đạt đúng ý mình chưa thì ...
Tôi thí dụ:
1. Chắc chắn tác giả không lường trước rằng cho 3 textbox nhưng có khi chỉ sử dụng 2 (tính diện tích hình bình hành), hoặc chỉ sử dụng 1 (tính diện tích hình vuông, hình tròn)
2. Với sub test() của siwtom, chắc chắn tác giả sẽ không vận dụng để tự lấy giá trị textbox đưa vào array được (theo tôi nhận xét qua kết quả 2 bài trả lời của ndu và của tôi bên trên).
3. Nếu tác giả biết, sẽ tạo 1 text box khác để nhập chuỗi chứa 'formula"

Xin lỗi siwtom, bài này tôi gợi ý cho tác giả chứ không có ý gì.
 
Upvote 0
Code của siwtom tôi cho là đã đúng 100% với những gì tác giả diễn đạt. Nhưng tác giả tự diễn đạt đúng ý mình chưa thì ...

Nhân tiện sư phụ sửa luôn tiêu đề bài này đi. Em thấy nó cũng kỳ kỳ (nhưng lúc trả lời bài viết lại không để ý)
 
Upvote 0
Chán nhất là hỏi không rõ ràng làm mọi người đoán mò mất thời gian, ý vậy phải không?

untitled.JPG
 
Upvote 0
Anh Ndu à cái code em cần là đây. cái này là của anh ở http://www.giaiphapexcel.com/forum/...hạy-1-lệnh-từ-1-chuổi-(có-cú-pháp-của-1-lệnh)
Sub ExecuteCommand()
Dim MyCode As String, VBComp As VBComponent, VBCodeMod As CodeModule
MyCode
= Sheet1.Range("A1").Value
Set VBComp
= ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBComp.Name = "TempMod"
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("TempMod").CodeModule
With VBCodeMod
.InsertLines 3, _
"Sub Main()" & vbLf & _
MyCode
& vbLf & _
"End Sub"
End With
Application
.Run "Main"
ThisWorkbook.VBProject.VBComponents.Remove VBComp
End Sub

nhưng mà đây là của thằng excel chuyển nó sang bên cad thì nó báo User-difined type not difinedAs VBComponent bác nào chuyển code sang code VBA for cad hộ em cái
 
Upvote 0
Anh Ndu à cái code em cần là đây. cái này là của anh ở http://www.giaiphapexcel.com/forum/showthread.php?34190-L%C3%A0m-sao-%C4%91%E1%BB%83-ch%E1%BA%A1y-1-l%E1%BB%87nh-t%E1%BB%AB-1-chu%E1%BB%95i-%28c%C3%B3-c%C3%BA-ph%C3%A1p-c%E1%BB%A7a-1-l%E1%BB%87nh%29


nhưng mà đây là của thằng excel chuyển nó sang bên cad thì nó báo User-difined type not difinedAs VBComponent bác nào chuyển code sang code VBA for cad hộ em cái

Trời, sao mà tôi biết được! Bạn tự mình nghiên cứu đi chứ
Chẳng hạn bên Excel gọi là Thisworkbook thì tương đương với nớ, bên ACAD gọi là gì? vân vân
Code này mang sang Word còn không chạy được nữa chứ đừng nói là ACAD
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom