Trang 6/6 đầuđầu ... 2 3 4 5 6
Hiển thị kết quả tìm kiếm từ 51 đến 60 trên tổng số: 60

Ðề tài: Mở lớp học Lập trình VBA trong Excel CƠ BẢN - Hà Nội, khai giảng 17h30, 04/03/2017

  1. Hướng dẫn tạo hàm tách Email trong chuỗi

    Theo nhu cầu thực tế của các công ty, việc tìm kiếm và lập danh sách khách hàng là không thể thiếu. Trong danh sách khách hàng, quan trọng nhất là địa chỉ email của khách hàng. Việc tổng hợp email lại đang là vấn đề vất vả nhất, có nhiều người ngồi copy từng email trong một chuỗi bao gồm các thông tin khác của khách hàng. Việc làm này sẽ mất rất nhiều thời gian và công sức, làm giảm hiệu quả công việc. Vậy mình viết bài này nhằm hướng dẫn các bạn viết một hàm tách địa chỉ Email, khi có một danh sách khách hàng bao gồm email và thông tin khách hàng, các bạn chỉ việc gõ hàm =TachEmail(chuỗi) và nhấn Enter, rồi copy cho các ô còn lại, hàm sẽ tự động tách riêng danh sách Email cho các bạn.
    Bước 1: Giả sử chúng ta có 1 danh sách khách hàng vào gồm Email, sdt, tên công ty,... ở cột A, mục đích của bài toán là tạo ra một hàm, khi chúng ta dùng hàm thì sẽ lọc ra danh sách Email ở cột bên cạnh. Các bạn thiết kế một mẫu dữ liệu tương tự như cơ sở dữ liệu trong dưới đây:


    Bước 2:
    Sau khi thiết kế xong cơ sở dữ liệu, các bạn vào môi trường lập trình (Alt + F11 để vào môi trường lập trình), các bạn chọn tới menu Insert -> module để tạo mới một module. Sau đó các bạn copy code dưới đây vào trong module vừa tạo:

    '...CODE....
    Option Explicit
    Function TachEmail(ByVal Chuoi As String) As Variant
    Dim s As String, Email As String 'khao bao 2 chuoi s,email
    Dim p1&, p2& ' khai bao 2 bien kieu long p1,p2
    s = " " & Chuoi & " " 'gan s= chuoi, minh ghep them 2 dau cach de khi chuoi chi co email
    Email = InStr(1, s, "@") ' tim vi tri cua "@" trong email
    If Email > 0 Then ' xet dieu kien co ton tai email k?
    p1 = InStr(Email, s, " ") 'tim vi tri cach trong lien truoc email
    p2 = InStrRev(s, " ", Email) 'tim vi tri cach trong lien sau email
    TachEmail = Mid(Chuoi, p2, p1 - p2) 'dung ham MID de lay ra email
    Else
    TachEmail = CVErr(xlErrNA) ' neu khong co email thi bao #N/A
    End If
    End Function
    '... END CODE....



    Bước 3:
    Sau khi hoàn thành việc copy code, các bạn vào môi trường bảng tính và tiến hành gõ hàm như sau:


    Bước 4:
    Các bạn đưa và đối số duy nhất của hàm là một chuỗi, các bạn gán như sau:


    Bước 5:
    Khi nhận xong chuỗi, các bạn copy cho các dòng dữ liệu còn lại để nhận kết quả:


    Để tìm hiểu thêm kiến thức và có thể viết thêm nhiều hàm cần thiết, các bạn tìm hiểu thêm tại khóa đào tạo VBA trong excel cơ bản của công ty.
    Link khóa học
    Các bạn vào đây để tải file ví dụ:
    Dowloand

  2. Điền dữ liệu vào 2 cột tự động theo ý bằng VBA

    Dim i As LongGiải bài toán theo yêu cầu như sau:
    Yêu cầu bài toán: Điền giá trị từ A1:A10 là 1:100, tương ứng mỗi giá trị tại cột A điền tiếp giá trị tại cột B từ B1:B100 nếu là:
    - Dòng chẵn điền "Bluesofts.net"
    - Dòng lẻ điền "Excelnangcao.com"
    Để giải bài toán trên, các bạn làm theo các bước sau:

    Bước 1: Các bạn tạo mới một module và copy code ở dưới đây vào.
    Sub VongLapFor()
    Dim i As Long
    For i = 1 To 100
    Cells(i, 1).Value = i
    If i Mod 2 = 1 Then
    Cells(i, 2).Value = "Excelnangcao.com"
    Else
    Cells(i, 2).Value = "Bluesofts.net"
    End If
    Next i
    End Sub


    Bước 2: Tại môi trường bảng tính, bạn tạo một nút bấm (hoặc Shap) để gán và chạy macro.


    Bước 3:
    Click chuột trái vào nút bấm để chạy macro và nhận kết quả.


    Các bạn vào đây download file ví dụ: Download
    Để tìm hiểu VBA trong Excel là gì, tại sao những người làm Excel cần học VBA, các bạn tìm hiểu tại khóa Đào tạo VBA trong Excel cơ bản tại Bluesofts.net.


  3. Protect/UnProtect Sheet bằng câu lệnh VBA

    Trong bài viết này mình sẽ hướng dẫn các bạn cách tạo thủ tục Protect/Unprotect Sheet để gán vào nút bấm trên bảng tính. Khi đó các bạn chỉ cần click chuột vào nút bấm, mà hình sẽ hiển thị thông báo "Ban muon Protect/Unprotect Sheet (YES/NO)", nếu các bạn chọn vào YES thì sẽ tự Protect Sheet, chọn No sẽ Unprotect Sheet. Để làm được như vậy, các bạn làm theo các bước sau:
    Bước 1: Các bạn vào môi trường lập trình, các bạn tạo 1 module và copy code dưới đây vào trong module.

    Option Explicit
    Sub Protect_UnProtectSheet()
    Dim sh As Worksheet
    Dim answer As Variant
    Set sh = ThisWorkbook.Sheets("Sheet1")
    answer = MsgBox("Ban muon Protect/Unprotect Sheet (YES/NO)", vbYesNo)
    If answer = vbYes Then
    sh.Protect 123 '123 la pass de protect
    Else
    sh.Unprotect 123
    End If
    End Sub


    Bước 2:
    Sau khi hoàn thành việc copy code vào trong module, các bạn trở về môi trường bảng tính, sau đó tạo một nút bấm rồi gán macro "Protect_UnProtectSheet" vào nút bấm.




    Bước 3:
    Các bạn click chuột vào nút bấm sẽ hiển thị thông báo "Ban muon Protect/Unprotect Sheet (YES/NO)", nếu các bạn chọn vào YES thì Sheet1 sẽ tự Protect với mật khẩu là 123.




    Kết quả sau khi bạn chọn YES.




    Bước 4:
    Để UnProtect Sheet các ban lại click chuột vào nút bấm sẽ hiển thị thông báo như ở bước 3, sau đó click vào NO thì sẽ tự động "Unprotect Sheet".




    Sau khi click vào NO sẽ có kết quả như sau:




    Các bạn vào đây tải file ví dụ: DOWNLOAD

    Để tìm hiểu VBA trong Excel là gì, tại sao những người làm Excel cần học VBA, các bạn tìm hiểu tại khóa Đào tạo VBA trong Excel cơ bản tại Bluesofts.net.

  4. Mình xin chia sẻ một phần mềm được thiết trên Excel và VBA, menu lệnh, userform, task pane, chữ chạy, treeview, listview unicode, ứng dụng chạy như phần mềm chuyên nghiệp của thầy Nguyễn Duy Tuân để các bạn tham khảo. (Mã nguồn của chương trình này được cấp cho các học viên học tại Bluesofts)
    Các bạn đăng ký tham gia khóa học VBA trong Excel cơ bản tại đây:
    Đăng ký học





  5. Kiểm tra, phát hiện sai xót trường số trong Excel



    Trong nhiều trường hợp khi thao tác trên bàn phím, vô tình người dùng nhập trường số thành trường text như thêm dấu nháy đơn đằng trước, trường ngày gõ sai định dạng.
    Ví dụ: Định dạng mặc định trong máy tính đang là mm/dd/yyyy, nhưng người dùng lại gõ 31/12/2016 thì sẽ là sai. Hậu quả để lại tính toán sai, số liệu sai và báo cáo sai nếu không phát hiện ra.
    Ngoài ra, trường hợp khó phát hiện hơn là sử dụng hàm để lấy ra giá trị nhưng lại lấy ra là Text.
    Ví dụ: ô A1 là HH-0K1, ta sử dụng hàm Right tại ô B1 để lấy ra số 1. Hàm Right(A1,1)=1 nhưng số 1 ở đây lại là Text chứ không phải là số.
    Cách xử lý:
    Cách 1: Dùng Conditional Formatting
    Bôi đen vùng cần kiểm tra rồi chọn Conditional Formatting sau đó vào phần Use a formula to determine which cells to format. Trong phần Format values where this formula is true gõ công thức =istext(…). Xem chi tiết ở video thao tác hướng dẫn trên.
    Cách 2: Dùng VBA
    Đoạn Macro sau đây sẽ giúp bạn trỏ con chuột đến từng ô có định dạng đang là Text để bạn sửa đến khi hoàn thành

    Đăng ký học VBA trong Excel để tối ưu và hỗ trợ đắc lực hơn cho công việc. Đăng ký Tại Đây


  6. Lọc ra danh sách tên sheet trong file vào một cột trong bảng tính

    Trong thực tế, những người sử dụng Excel mà sử dụng nhiều sheet để nhập số liệu. Việc thống kê tất cả tên sheet bằng các hàm excel thông thường là một việc rất khó khăn. Vậy mình xin chia sẽ cho các bạn thủ tục hiển thị danh sách tên sheet trong một file bất kỳ vào một cột trong bảng tính một cách đơn giản nhất. Giả sử chúng ta có một file Excel gồm các sheet sau: Bluesofts.net1, Bluesofts.net2, Bluesofts.net3, Bluesofts.net4, Bluesofts.net5, Bluesofts.net6. Yêu cầu bài toán là lọc ra tên tất cả các sheet vào một cột bất kỳ trong 1 sheet.


    Để giải bài toán trên, các bạn làm theo các bước sau:
    Bước 1: Các bạn vào môi trường lập trình (nhấn phím tắt Alt+F11) , rồi bạn vào menu Insert -> chọn vào module để insert module, sau khi tạo xong module, các bạn copy code dưới đây vào trong module:
    Sub LayTenSheet() Dim Sh As Worksheet
    Dim I As Long
    'Duyet tung sheet trong sheets, ghi ten sheet ra cot A
    For Each Sh In Application.ThisWorkbook.Sheets
    I = I + 1
    Cells(I, 1).Value = Sh.Name
    Next
    End Sub


    Bước 2
    : Các bạn vào môi trường bảng tính, vào Menu Developer --> chọn Insert --> Button (Form Control) (Trường hợp trên thanh Menu chưa có thẻ Developer thì thực hiện như sau: File --> Options --> Customize Ribbon rồi tích chọn vào ô Developer và nhấn OK)


    Sau khi chọn vào Button, các bạn đặt chuột vào 1 ví trí mà bạn muốn tạo nút bấm, giữ chuột trái và kéo một vùng đủ rộng của nút bấm,rồi thả chuột sẽ hiện ra bảng Assign Macro. Chọn tên Macro "LayTenSheet" rồi click chuột trái vào OK.



    Bước 3: Sau khi Assign xong Macro thì bạn click chuột phải vào nút bấm vừa tạo và sửa tên theo ý của bạn, sau khi sữa tên xong, các bạn click chuột ra bên ngoài bảng tính.


    Bước 4
    : Tiếp theo các bạn click chuột trái vào nút bấm để nhận kết quả.


    Tính ứng dụng của chức năng này:
    - Trong môi trường doanh nghiệp file excel sẽ có rất nhiều sheets, việc sử dụng công thức giữa các sheets hoặc nhớ các tên sheets gặp nhiều khó khăn, đồng thời file excel có thể chia sẻ cho nhiều người sử dụng. Do đó, chức năng này sẽ giúp người dùng kiểm soát và sử dụng file excel hiệu quả hơn.
    - Ngoài ra, khi tạo ra file excel tự động bằng công thức hoặc bằng VBA thì người dùng sẽ thường ẩn sheets tự động để không tác động vào tên, cấu trúc các sheets trong file excel. Tính năng này sẽ trở nên hữu ích cho người dùng để tạo các thêm các công thức từ các sheets bị ẩn theo cấu trúc ten_sheet!.
    Ví dụ: =Sum(Bluesofts.net2!$B$5:$B$200).
    Link tải file:
    Tải file
    Để tham khảo thêm nhiều kiến thức về VBA cơ bản, các bạn tìm hiểu tại khóa đào tạo lập trình VBA cơ bản trong excel..
    Link khóa học:
    Đăng ký học

  7. Tạo hàm tách dãy số đầu tiên trong chuỗi

    Chào các bạn, hôm nay mình sẽ giới thiệu cho các bạn hàm tách dãy số đầu tiên hoặc dãy số đầu tiên có ký tự "-" liên kết với dãy số tiếp theo. Để có hàm tách dãy số như trên, các bạn tiến hành làm theo các bước sau:
    Bước 1: Tạo cơ sở dữ liệu gồm ký tự và số.



    Bước 2: Vào môi trường lập trình VBA, các bạn vào menu INSERT -> MODULE để tạo một module, sau đó copy code dưới đây vào trong module vừa tạo.

    '...CODE....
    Function TACHDAYSO(ByVal CHUOI As String) As String
    Dim I As Long
    Dim CH As String
    Dim BATDAT As Boolean
    For I = 1 To Len(CHUOI)
    CH = Mid(CHUOI, I, 1)
    If IsNumeric(CH) Or CH = "-" Then
    If Not BATDAT Then
    BATDAT = True
    End If
    TACHDAYSO = TACHDAYSO & CH
    Else
    If BATDAT Then
    Exit Function
    End If
    End If
    Next I
    End Function
    '...END CODE...

    Sau khi pate vào sẽ tương tự như hình dưới đây:


    Bước 3: Sau khi hoàn thành việc copy code, các bạn vào môi trường bảng tính Excel, các bạn gõ hàm =TACHDAYSO( ô chứa chuỗi ký tự và số).


    Bước 4: Tiếp theo các bạn nhấn ENTER rồi copy công thức cho các ô còn lại và nhận kết quả:


    Để tìm hiểu thêm nhiều kiến thức bổ ích về VBA, các bạn tìm hiểu tại khóa đào tạo VBA trong Excel cơ bản của công ty.
    Link khóa học: Đào tạo VBA trong Excel cơ bản
    Các bạn tải File ví dụ tại đây: Dowloand

  8. Phóng to và thu nhỏ Userform và Controls trong Excel VBA

    Trong VBA. Tạo userform chúng ta muốn co giãn form và các controls bên trong tự phóng to lên hoặc thu nhỏ theo tỷ lệ form. Bình thường không làm được nhưng với phương pháp lập trình VBA, API và sử dụng thuộc tính Userform.Zoom chúng ta làm được việc này.


    Cách làm rất đơn giản. Bạn hãy làm theo hướng dẫn sau:
    1. Mở Userform, View Code
    2. Dán đoạn code sau vào
    '****************************************
    'Tac gia: Nguyen Duy Tuan
    'Tel : 0904.210.337
    'E.Mail :
    tuanktcdcn@yahoo.com
    'Website: www.bluesofts.net
    '****************************************

    Private Sub UserForm_Initialize()
    AllowResize = True
    OldWidth = Width
    OldHeight = Height
    If Val(Application.Version) < 9 Then
    hwnd = FindWindow("ThunderXFrame", Caption) 'XL97
    Else
    hwnd = FindWindow("ThunderDFrame", Caption) 'XL2000
    End If
    PrevStyle = GetWindowLong(hwnd, GWL_STYLE)
    SetWindowLong hwnd, GWL_STYLE, PrevStyle Or WS_SIZEBOX Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
    Label3.ForeColor = vbBlue
    Dim I&
    For I = 1 To 12
    ComboBox1.AddItem "Tháng " & I
    ListBox1.AddItem "Tháng " & I
    Next I
    End Sub

    '--------------------------------------------------------------------

    Private Sub [B]UserForm_Resize[/B]()
    Dim tmpZoom&, CurStyle&
    Dim tmpWidth As Double
    If Not AllowResize Then Exit Sub
    CurStyle = GetWindowLong(hwnd, GWL_STYLE)
    tmpZoom = Round(Width / OldWidth * 100, 0)
    If tmpZoom < ZoomMin Then tmpZoom = ZoomMin
    If tmpZoom > ZoomMax Then tmpZoom = ZoomMax
    AllowResize = False 'Ngan khong chay UserForm_Resize khi dang thay doi size
    If tmpZoom = ZoomMin Or tmpZoom = ZoomMax Then
    'Neu khong phai la phong to man hinh thi co lai kich co
    If Not (CurStyle And WS_MAXIMIZE) = WS_MAXIMIZE Then
    Width = tmpZoom * OldWidth / 100
    Height = Width * OldHeight / OldWidth
    End If
    End If
    If (CurStyle And WS_MAXIMIZE) = WS_MAXIMIZE Then
    tmpWidth = OldWidth * Height / OldHeight
    tmpZoom = Round(tmpWidth / OldWidth * 100, 0) 'limitZoom
    End If
    'Change height by width
    'If Not ((CurStyle And WS_MAXIMIZE) = WS_MAXIMIZE Or ' (CurStyle And WS_MINIMIZE) = WS_MINIMIZE) Then
    ' Height = Width * OldHeight / OldWidth
    'End If
    AllowResize = True 'Cho phep resize
    Zoom = tmpZoom
    End Sub

    Download mã nguồn

  9. Ghi thông tin theo ý lên thanh trạng thái trong Excel.
    Các bạn vào môi trường lập trình INSERT một MODULE copy code dưới đấy vào module và chạy chương trình (nhấn F5 hoặc click vào RUN).

    Sub GhiTrangThai()
    Application.StatusBar = "HOANG PHONG"
    End Sub

    Nhấp chuột vào hình để phóng to

Name:	1.jpg
Views:	2
Size:	21.0 KB
ID:	172194

    Để tìm hiểu thêm nhiều kiến thức bổ ích tại khóa đào tạo "Lập trình VBA trong excel cơ bản" của Công ty Cổ phần Bluesofts tổ chức.
    Xem đầy đủ thông tin khóa học tại đây.

  10. Lập báo cáo động kết hợp VBA và A-Tools

    Trong thực tế công việc văn phòng, các bạn nhân viên thường phải làm nhiều loại báo cáo đặc thù theo nhu cầu của doanh nghiệp. Ngoài việc dùng công thức Excel thuần túy, nhiều người đã tìm hiểu về VBA trong excel để thiết kế những báo cáo đơn giản, hiệu quả, giảm dung lượng file và tăng tốc độ xử lý công thức, dữ liệu trong file. Hôm nay mình sẽ hướng dẫn các bạn làm một báo cáo động có kết hợp VBA và một công cụ mới là A-Tools. Mục đích là tạo được báo cáo động, lọc theo một điều kiện "Mã hàng" nhưng sẽ "lọc theo một hoặc nhiều mã hàng" .Giả sử ta có bài toán như sau: Có một bảng dữ liệu gồm nhiều cột, trong đó có cột "Mã hàng". Vậy yêu cầu bài toán là: Tôi muốn xem báo cáo theo một mã hàng hoặc nhiều mã hàng, khi tôi chọn một mã hàng thì lọc toàn bộ dữ liệu của mã hàng đấy, khi chọn 2 thì lọc toàn bộ dữ liệu của 2 mã hàng,... tương tự cho n mã hàng.Để giải quyết bài toán trên chúng ta làm như sau:Bước 1: Thiết kế mẫu file Excel gồm 3 sheet như sau:Sheet Setup: để lưu các thiết lập chung, ở đây chỉ có 1 sheet báo cáo nên chỉ cần lưu bảng dữ liệu điệu kiện gồm tất cả mã và tên hàng. Tôi tên vùng dữ liệu là DMCT_DT chẳng hạn, các bạn có thể đặt tên theo cách hiểu hoặc cấu trúc dữ liệu của mình (note: tên tiếng việt viết liền không giống, ngăn cách nhau bởi dấu gạch dưới).



    SheetData: Là nơi lưu trữ cơ sở dữ liệu của các bạn, hiện tại mình đang thiết kế theo cấu trúc "Sheetdata" vừa là nơi nhập liệu, vừa lưu trữ dữ liệu. Sau này các bạn có thể tìm hiểu thêm về VBA thiết kế Form nhập liệu riêng, sau khi lưu sẽ vào "Sheetdata", ở đây vùng dữ liệu mình đặt ten là DATA.



    SheetReport: Là sheet để xem báo cáo, cấu trúc báo cáo thì mình thiết kế như hình dưới đây, gồm 1 Shap để chọn mã hàng, Shap này sẽ hiển thị Form chọn danh mục mã hàng theo ý. Các dòng tiêu đề mình thiết kế bằng tiếng việt, có dòng tổng cộng ở phía dưới, khi lập công thức chỉ việc lập từ dòng thứ 2.


    Bước 2:
    Tiến hành thiết kế Form trong VBA.Các bạn vào môi trường lập trình VBA (ALT+F11), vào menu Insert ->chọn UserForm, trong Form các bạn thiết kế theo cấu trúc tùy ý, còn trong bài toán của mình thì mình thiết kế hình dưới đây, ở đây mình dùng gồm "CheckBook" (để chọn tất cả), "ListBook" (để lấy danh sách) và các "Button" (để thực hiện lệnh).



    Để nạp danh sách vào "Listbox", các bạn chọn vào "Listbox", ở bên trái phần "Propties", các bạn vào "Categorized", tại phần "RowSource", các bạn gõ tên bảng chứa mã và tên mà chúng ta đã đặt trong "SheetSetup". Ở đây các bạn chú ý trường "ColumnCount": số cột trong bảng mà các bạn cần hiển thị trên "ListBook", hiện tại mình để là 2 thì có cả mã và tên cùng hiển thị.

    Sau khi thiết lập xong, các bạn double click vào Button "Chọn" rồi copy code dưới đây vào trong thủ tục bạn vừa tạo.
    Dim s As String
    If cbAll.Value = True Then
    For i = 0 To lbDanhMuc.ListCount - 1
    If s = "" Then
    s = lbDanhMuc.List(i, 0)
    Else
    s = s & "','" & lbDanhMuc.List(i, 0)
    End If
    Next i
    Else
    For i = 0 To lbDanhMuc.ListCount - 1
    If lbDanhMuc.Selected(i) = True Then
    If s = "" Then
    s = lbDanhMuc.List(i, 0)
    Else
    s = s & "','" & lbDanhMuc.List(i, 0)
    End If
    End If
    Next i
    End If
    s = "'" & s & "'"
    ThisWorkbook.Sheets("Report").Range("C1").Value = s
    Unload Me

    Các bạn chú ý dòng : ThisWorkbook.Sheets("Report").Range("C1").Value = s, chữ "Report" chính là tên sheet báo cáo mình đã thiết lập.

    ...
    Các bạn xem đầ đủ nội dung bài viết tại đây:
    Link bài viết
    Các bạn tải file ví dụ về chạy thử tại đây: Link download file
    Đây là một bài toán cơ bản có kết hợp VBA và công thức tạo báo cáo động bằng A-Tools, sau khi các bạn tìm hiểu kỹ về cách làm báo cáo động bằng A-Tools kết hợp kiến thức VBA cơ bản, các bạn có thể thiết kế các file Excel nhanh gọn, đơn giản, giống như các phần mềm chuyên nghiệp trên Excel.Ở đây mình cũng xin chia sẽ nội dung khóa đào tạo VBA cơ bản của công ty cho những bạn có nhu cầu, điều kiện tham gia khóa học, các bạn vào đây để xem:
    Link khóa học

Trang 6/6 đầuđầu ... 2 3 4 5 6

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •