Hỏi về chuyển dữ liệu từ form sang bảng tính

Liên hệ QC

toihocexcel

Thành viên mới
Tham gia
11/10/06
Bài viết
6
Được thích
2
Làm thế nào mà từ một cái form nhập liệu cho vào excel xử lí và xuất đồ thị trên excel luôn? Mong thầy và mọi người có thể cho một ví dụ nào đó làm mẫu được không?
 
Để tạo form nhập dữ liệu rồi xuất sheet thì trước hết bạn phải biết 1 chút về VBA cái đã. Tức là phải hiểu cách tạo Function, Sub cái đã. Hiểu được code và sử dụng chúng, sau đó mới có thể tiếp tục được.
 
Đầu tiên, bạn phải xây dựng một biểu đồ quan hệ nào đó như hình dưới đây. Từ hình vẽ bạn thấy có 2 giá trị cần thay đổi là ô C3 và C7.
form1.jpg


Để tạo form vào 2 số này bạn có thể thực hiện theo 2 cách như sau:

1. Cách 1 (sử dụng Inputbox):

Bạn vào menu/View/Toolbars. Sau đó chọn Control Toolbox. Sau đó chọn biểu tượng command button và bạn vẽ lên màn hình. Đầu tiên nó có tên là CommandButton1. Bạn ấn phải chuột lên nút đó và chọn Properties. Cửa sổ các thuộc tính hiện ra như dưới đây:

form5.jpg


Bạn sửa tên trong mục Caption (thành Cach 1 chẳng hạn)
 
Sau đó vẫn trên nút đó ấn phải chuột chọn View Code (hoặc nháy kép chuột), cửa sổ Microsoft Visual Basic hiện ra, có hiện sẵn code kèm theo, bạn chỉ nhập nội dung bên trong.

Mã:
Private Sub CommandButton1_Click()
    .....
End Sub

Sau đó bạn sửa nội dung trên thành:

Mã:
Private Sub CommandButton1_Click()
  Dim Lonnhat, Nhonhat As Single
        Lonnhat = InputBox("Vao gia tri he so rong lon nhat", "Vi du")
        Nhonhat = InputBox("Vao gia tri he so rong nho nhat", "Vi du")
            Worksheets("Sheet1").Range("C3") = Lonnhat
            Worksheets("Sheet1").Range("C7") = Nhonhat
        MsgBox "Gia tri truc tung da thay doi", vbOKOnly + vbInformation
        Range("A1").Select
End Sub

Sau đó bạn đóng cửa sổ vào Microsoft Visual Basic vào và thử ấn vào nút đó chạy thử. Kết quả này sẽ thể hiện trên biểu đồ.
 
2. Cách thứ 2 (dùng Form):

Bạn vào menu/Tools/Macro/Visual Basic Editer. Cửa sổ Microsoft Visual Basic hiện ra như hình vẽ:

form2.jpg


Sau đó bạn vào menu/Insert/Userform. Khi đó Userform1 hiện ra. Bạn dùng các Control trong Toolbox để xây dựng form đó. Trường hợp này ta dùng 2 Label (Có tên là hệ số rỗng max và hệ số rỗng min), 2 textBox (Caption:txt_Max và txt_Min) và 1 command (Caption là OK). Hình vẽ như sau:

form3.jpg


Sau đó nháy kép vào nút OK, cửa sổ Visual Basic Editer hiện ra và bạn chỉ nhập vào trong đó nội dung sau:
Mã:
Private Sub cmdOK_Click()
    Dim Lon, Nho As String
        Worksheets("Sheet1").Range("C3").Value = Val(UserForm1.Txt_Max.Text)
        Worksheets("Sheet1").[B][COLOR="Red"]Range("C7").Value [/COLOR][/B]= Val(UserForm1.Txt_Min.Text)
    UserForm1.Txt_Max.Text = ""
    UserForm1.Txt_Min.Text = ""
    Me.Hide
End Sub
 
Lần chỉnh sửa cuối:
Sau đó bạn tạo 1 nút ở ngoài sheet có tên là Cach 2 (cách tạo như cách 1), nội dung code của nút này như sau:
Mã:
Private Sub CommandButton2_Click()
    UserForm1.Show
End Sub

Bạn thử làm xem thế nào. Cần thì tải file kèm theo, nhưng file này đang bị virus đó.

Chúc bạn thực hiện tốt!
 

File đính kèm

  • Vidu_form.zip
    255.8 KB · Đọc: 3,315
Tôi đã kiểm tra rồi, file này không bị virus, nhưng các bạn nên kiểm tra lại.
Ngoài ra cần sửa lại Sub cmdOK_Click() đúng như cái tôi đã tô màu đỏ (địa chỉ chuyển từ C6 sang C7).
 
Diễn đàn nhiệt tình quá trời. Lúc nào mình có thắc mắc thì các bạn giúp nhé
 
Cảm ơn thầy đã tận tình giúp đỡ. Nhân tiện cho em hỏi thế này :
Em tạo 2 form và muốn load hai form đó theo thứ tự tức là đầu tiên userform1 mở ra . Trên userform1 đó có tạo 1 nút thoát khi nhấn nút đó thì userform1 sẽ mất. Em đã làm được như thế nhưng em muốn khi userform1 đó close sẽ đồng thời userform2 được load lên. Em làm thế này mà không được
if userform1.hide then
userform2.show
end if
end sub

Mong thầy và mọi người chỉ giúp.
 
Không nên sử dụng If then

Chỉ cần như sau:
Mã:
   UserForm1.hide
   UserForm2.show

Chi tiết thì em tải file kèm theo
 

File đính kèm

  • Vidu Form1,2.zip
    8.3 KB · Đọc: 1,320
Bình thường, khi UserForm hiện lên, bạn không thể bấm sang bảng tính để xem nội dung.
Muốn xem được nội dung bảng tính khi UserForm đang hiện, bạn phải đặt thuộc tính Show Modal trở thành False.
Ví dụ như sau:
Mã:
Sub Myform()
   UserForm1.Show [COLOR="Red"]vbModeless[/COLOR]
End Sub
Khi đó thì tha hồ chuyển chuột giữa bảng tính và form.
 
Web KT

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

Back
Top Bottom