Dành cho các bạn mới biết về VBA. Thiết lập UserForm và viết code đơn giản (1 người xem)

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

ngodany135

Thành viên thường trực
Tham gia
1/12/10
Bài viết
346
Được thích
522
Nghề nghiệp
GIÁO VIÊN
Mã:
Private Sub Cmd1_Click()
    If Val(Txta.Text) + Val(Txtb.Text) + Val(Txtc.Text) = Val(Txt1.Text) Then
        TxtThongBao = "Rat Chinh Xac - Xin Chuc Mung Ban - HiHiHi!"
    Else
        TxtThongBao = "Rat tiec ban da lam phep tinh sai"
    End If
End Sub
Private Sub Cmd2_Click()
    If Val(Txta.Text) + Val(Txtb.Text) - Val(Txtc.Text) = Val(Txt2.Text) Then
        TxtThongBao = "Rat Chinh Xac - Xin Chuc Mung Ban - HiHiHi!"
    Else
        TxtThongBao = "Rat tiec ban da lam phep tinh sai"
    End If
End Sub
Private Sub Cmd3_Click()
    If Val(Txta.Text) - Val(Txtb.Text) + Val(Txtc.Text) = Val(Txt3.Text) Then
        TxtThongBao = "Rat Chinh Xac - Xin Chuc Mung Ban - HiHiHi!"
    Else
        TxtThongBao = "Rat tiec ban da lam phep tinh sai"
    End If
End Sub
Private Sub CmdThoat_Click()
    End
End Sub
Private Sub CmdXoa_Click()
    Txt1 = " "
    Txt2 = " "
    Txt3 = " "
    Txta = " "
    Txtb = " "
    Txtc = " "
    TxtThongBao = " "
End Sub
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Trước đây minh nghỉ VBA là cái gì ta. Sau 1 thời gian tìm hiểu thì mình mới biết được. Hôm nay mình gữi để các bạn 2 bài tập làm này mà các bạn có thể, từ từ mà hiểu biết về VBA và các bạn có thể thực hành theo. Mình sẽ gữi bài thực hành tiếp theo mà các bạn có thể làm được về VBA.
Cảm ơn đã chia sẽ... nhưng tôi nghĩ nếu Dành cho các bạn mới biết về VBA thì nên đơn giản hơn nữa chứ ---> Bạn làm hoành tráng quá, hổng chắc mấy người mới học có thể HOC được đâu
Ẹc... Ẹc...
 
Upvote 0
Ah. Sorry các bác,chú,các bạn nhiều, mình gữi File lộn rồi. Thông cảm nha. Đúng ra là cái này nè các bạn của mình ơi! Bài này dể nè. Đầu Tiên bạn vào Tool-->Macro-->Security-->Bạn chon Low(not recommanded). Thoát bảng tính đi và mở lên lại nha. Mong đúng theo ý của bật sư phụ Ndu...Hihi
 

File đính kèm

Upvote 0
Cái này dể nữa nè các bạn ơi!
 

File đính kèm

Upvote 0
Nhập văn bản trên form

Cái này dành cho các bạn yêu thích form và chỉ làm chơi thôi và cái này mình biết là còn sai sót, nên đưa lên để các bật thầy của chúng ta cứ mạnh dạn góp ý cho em thêm nhé. Àh nhớ góp ý, đừng chê bay nha. Xin cảm ơn trước.
 
Upvote 0
Cái này dành cho các bạn yêu thích form và chỉ làm chơi thôi và cái này mình biết là còn sai sót, nên đưa lên để các bật thầy của chúng ta cứ mạnh dạn góp ý cho em thêm nhé. Àh nhớ góp ý, đừng chê bay nha. Xin cảm ơn trước.

Biểu dương bạn đã có tinh thần học hỏi, sáng tạo.

Tuy nhiên, sau khi thực hiện trên Form của bạn, tôi thấy vài vấn đề cần thảo luận như sau:

1) Các thủ tục, bạn nên để theo hình răng cưa, như vậy thủ tục sẽ sáng hơn và rành mạch hơn:

Thay vì:
PHP:
Private Sub ChkBold_Click()
TxtText1.FontBold = ChkBold.Value
End Sub
Thì nên:
PHP:
Private Sub ChkBold_Click()
TxtText1.FontBold = ChkBold.Value
End Sub

2) Khi thoát Form, thay vì dùng Unload Me, bạn lại dùng End, không sai, tuy nhiên các code khác, Form khác đang chạy, nó sẽ kết thúc tất cả!

Thay vì:
PHP:
Private Sub CmdExit_Click()
End
End Sub

Thì nên:
PHP:
Private Sub CmdExit_Click() 
 Unload Me
End Sub

3) Nếu chỉ để nhập giá trị vào ô E5 của Sheet1 thôi thì code không cần quá dài dòng, khai báo biến nhiều cho rườm rà:

Thay vì:
PHP:
Private Sub CmdNHAP_Click()
Dim iRow As LongDim ws As WorksheetSet ws = Worksheets("sheet1")If Me.TxtText1 = "" Then
MsgBox "nhap chua day du", , "THONG BAO !"Exit SubEnd IfiRow = ws.Cells(Rows.Count, 8).End(xlUp).Row + 5ws.Cells(iRow, 5).Value = Me.TxtText1.ValueMe.TxtText1 = ""Me.TxtText1.SetFocusEnd Sub

Thì nên:
PHP:
Private Sub CmdNHAP_Click() 
 With TxtText1 
   If .Value = "" Then MsgBox "nhap chua day du", , "THONG BAO !": Exit Sub    Sheet1.[E5] = .Value    .Value = "": .SetFocus
  End With
End Sub

Đôi lời thảo luận cùng bạn. Mong các cao thủ hướng dẫn thêm.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Trước hết cảm ơn sự góp ý chân tình của anh và tiếp theo Thay vì mọi người dùng phần mềm UNIKEY bây giờ mình không dùng UNIKEY đó nữa mà mình làm 1 cái form UniKey riêng để sữ dụng cho cá nhân nhanh hơn mà trang Exell có tác dụng bình thường như sữ dụng phần mềm UNIKEY, thì sao hả anh Thiện và các thành viên. Xin Cảm ơn.
 
Upvote 0
Trước hết cảm ơn sự góp ý chân tình của anh và tiếp theo Thay vì mọi người dùng phần mềm UNIKEY bây giờ mình không dùng UNIKEY đó nữa mà mình làm 1 cái form UniKey riêng để sữ dụng cho cá nhân nhanh hơn mà trang Exell có tác dụng bình thường như sữ dụng phần mềm UNIKEY, thì sao hả anh Thiện và các thành viên. Xin Cảm ơn.

Chuyển Font cho Form thì OK chứ can thiệp vào bộ gõ thì sao được hả bạn?
 
Upvote 0
Mình dùng Shell Function gọi Unikey lên thì nghe có lý chứ làm gì mà can thiệp được vào ta chắc ngodany135 đang nghiên cứu hay gì vậy?

Đúng là như vậy! Nếu như có sẳn phần mềm bộ gõ dấu, chứ không thì không sao làm được! Ví dụ:

Sub AppOpen()
Dim OpenApp
OpenApp = Shell("C:\Program Files\UniKey 4.0.8 Final\UniKey.exe", 1)
End Sub
 
Upvote 0
Mình dùng Shell Function gọi Unikey lên thì nghe có lý chứ làm gì mà can thiệp được vào ta chắc ngodany135 đang nghiên cứu hay gì vậy?

Vâng mình hỏi chứ có nghiên cứu gì đâu, theo như các bạn thảo luận thế thì dùng bộ gõ không được, vậy mình dùng font chữ cho trang tính mình được àh, vậy các bạn có thể làm theo file mình đã gữi lên được chứ, nhớ đính kèm theo file gữi lên để mình học và hỏi thêm nhé. Thân chào
 
Upvote 0
Trước hết cảm ơn sự góp ý chân tình của anh và tiếp theo Thay vì mọi người dùng phần mềm UNIKEY bây giờ mình không dùng UNIKEY đó nữa mà mình làm 1 cái form UniKey riêng để sữ dụng cho cá nhân nhanh hơn mà trang Exell có tác dụng bình thường như sữ dụng phần mềm UNIKEY, thì sao hả anh Thiện và các thành viên. Xin Cảm ơn.
Cái vụ này không khả thi đâu, đừng suy nghĩ cho mất công. Mà nhất là nó lại không phù hợp tí nào trong topic dành cho người mới biết về VBA
 
Upvote 0
Mã:
Private Sub Cmd1_Click()
    If Val(Txta.Text) + Val(Txtb.Text) + Val(Txtc.Text) = Val(Txt1.Text) Then
        TxtThongBao = "Rat Chinh Xac - Xin Chuc Mung Ban - HiHiHi!"
    Else
        TxtThongBao = "Rat tiec ban da lam phep tinh sai"
    End If
End Sub
Private Sub Cmd2_Click()
    If Val(Txta.Text) + Val(Txtb.Text) - Val(Txtc.Text) = Val(Txt2.Text) Then
        TxtThongBao = "Rat Chinh Xac - Xin Chuc Mung Ban - HiHiHi!"
    Else
        TxtThongBao = "Rat tiec ban da lam phep tinh sai"
    End If
End Sub
Private Sub Cmd3_Click()
    If Val(Txta.Text) - Val(Txtb.Text) + Val(Txtc.Text) = Val(Txt3.Text) Then
        TxtThongBao = "Rat Chinh Xac - Xin Chuc Mung Ban - HiHiHi!"
    Else
        TxtThongBao = "Rat tiec ban da lam phep tinh sai"
    End If
End Sub
Private Sub CmdThoat_Click()
    End
End Sub
Private Sub CmdXoa_Click()
    Txt1 = " "
    Txt2 = " "
    Txt3 = " "
    Txta = " "
    Txtb = " "
    Txtc = " "
    TxtThongBao = " "
End Sub

theo bài viết tại sao a+b+c = thì không có kết quả nhưng báo sai rồi. Nếu a=1;b=2;c=3 có nghĩa là a+b-c =0 thì rất chính xác là thế nào bạn ? có thể giải thích giúp được không.
Nếu có phải cho kết quả bằng bao nhiêu chứ
Cám ơn bạn mong bạn giúp đỡ
 
Upvote 0
Em mới học VBA nên chưa rành lắm, thay vì gõ công thức và kéo để copy, em phải viết code VBA.

Đề bài: Khi bấm nút Value, gán giá trị trong ô E2 vào cột I với hàng nào có giá trị cột H - giá trị F5

attachment.php

Em viết thế này sao vẫn chưa chạy được. Xin các thầy cô giúp em ạ.

Sub cmdValue1()
Dim i, Dong As Integer
Dim ketqua As Boolean
Windows("Geld.xls").Activate
Dong = 1


While Worksheets("taglich 2014").Range("H" & Dong).Value <> ""

If Worksheets("taglich 2014").Range("H" & Dong).Value = Worksheets("taglich 2014").Range("F5").Value Then
ketqua = True
End If

Dong = Dong + 1
Wend

If ketqua Then
i = Dong
Worksheets("taglich 2014").Range("I" & i).Value = Worksheets("taglich 2014").Range("E2").Value

End If
End Sub
 
Upvote 0

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

Back
Top Bottom