Bạn đang cần vẽ một hình dạng hay một đối tượng nào đó trong Excel? Trong bài viết này, UniTrain sẽ hướng dẫn bạn cách vẽ bằng VBA Excel.

Lấy ví dụ về thiết kế một hình chữ nhật, một hình chữ nhật có kích thước ô và một hình lập phương. Nhìn chung, đối với tất cả các mã VBA, người dùng thao tác theo các bước dưới đây:

Bước 1: Mở trang tính và lưu tệp Excel dưới dạng Excel Macro-Enabled Workbook (*xlsm).

Bước 2: Chọn Developer > Visual Basic.

Use of VBA for Drawing Objects

Bước 3: Chọn Insert > Module.

Sau đó, người dùng phải viết mã cụ thể trong Module. Do đó, hãy xem các mã sau đây để biết các hình dạng khác nhau.

Thiết kế hình chữ nhật bằng mã VBA

Bước 1: Viết mã dưới đây trong Module 1.

Sub My_Rec()
Set myRec = Worksheets(1)
myRec.Shapes.AddShape msoShapeRectangle, 40, 60, 100, 50
End Sub

Using VBA Code to Sketch a Rectangular Shape in Excel

Bước 2: Save mã và trở lại Excel File.

Bước 3: Chọn Developer > Macros.

Bước 4: Chọn Macro (My_Rec) > Run. 

Sau đó, bạn sẽ thấy hình chữ nhật hiển thị dưới hình dưới.

Định dạng và thiết kế hình chữ nhật 

Giả sử, người dùng muốn định dạng đồng nhất màu cho hình chữ nhật và chỉnh sửa kích thước hình chữ nhật giống với kích thước ô của Excel.

Cách thao tác:

Bước 1: Trong tab Developer, chọn Visual Basic > chọn tab Insert > chọn Module.

Bước 2: Nhập mã dưới đây vào Module 2.

Sub My_Cell_Size_Rec()
ActiveSheet.Shapes.AddShape(msoShapeFlowchartProcess, 40, 60, 65, 20).Select
    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 16
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.Visible = msoTrue
End Sub

Excel VBA Code for Designing Cell Size Rectangle with a Solid Color

Bước 3: Chọn Save và trở lại Excel File > chọn tab Developer > Macros.

Bước 4: Chọn Macro (My_Cell_Size_Rec) > chọn Run.

Cuối cùng, bạn sẽ thấy được hình dạng hình chữ nhật mới như hình dưới.

Vẽ khối lập phương trong Excel bằng mã VBA

Cách thao tác:

Bước 1: Chọn tab Developer > chọn Visual Basic > Insert > Module.

Bước 2: Viết mã dưới đây vào Module 3.

Sub my_cube()
Dim my_cube As Shapes
    Set my_cube = ActiveSheet.Shapes
With my_cube
    With .AddShape(msoShapeCube, 40, 60, 100, 90).TextFrame
        .Characters.Text = "Exceldemy"
        .HorizontalAlignment = xlHAlignCenter
        .VerticalAlignment = xlVAlignDistributed
    End With
End With
End Sub

Applying VBA Code for Drawing Objects like Cube in Excel

Bước 3: Chọn Save và trở lại Excel File > chọn tab Developer > chọn Macros. 

Bước 4: Chọn Macro (my_cube) > chọn Run.

Cuối cùng, kết quả sẽ hiển thị như hình dưới.

Excel VBA Drawing Objects

Thiết kế hình dạng và văn bản bằng mã VBA trong Excel

Cách thao tác:

Bước 1: Trong tab Developer, chọn Visual Basic > Insert > Module.

Bước 2: Nhập mã trong Module 4.

Sub Different_shape_with_Exceldemy()
    Dim my_int, my_intgr           As Integer
    Dim my_x, my_y, my_z, my_sng, my_size        As Single
    Dim my_shape          As Shape
    Dim my_difined_text       As String
    Dim start_frm_left, start_cell_top  As Single
    start_frm_left = ActiveCell.Left
    start_cell_top = ActiveCell.Top
    my_difined_text = "Hi Exceldemy"
    my_sng = 12
    my_intgr = Len(my_difined_text)
    my_size = Application.InchesToPoints(1)
    For my_int = 1 To my_intgr
        If Mid(my_difined_text, my_int, 1) <> " " Then
            my_x = my_sng * my_int / my_intgr
            my_x = Application.InchesToPoints(my_x)
            my_y = Application.InchesToPoints(my_z)
            If my_int Mod 2 = 1 Then
                Set my_shape = ActiveSheet.Shapes.AddShape(msoShapeUpRibbon, start_frm_left + my_x, start_cell_top + my_y, my_size, my_size)
            Else
                Set my_shape = ActiveSheet.Shapes.AddShape(msoShapeDownRibbon, start_frm_left + my_x, start_cell_top + my_y, my_size, my_size)
            End If
            my_shape.Fill.ForeColor.RGB = RGB(chng_shape_clr(155, 200), chng_shape_clr(200, 255), chng_shape_clr)
            my_shape.Fill.Visible = msoTrue
            my_shape.TextFrame.Characters.Text = UCase(Mid(my_difined_text, my_int, 1))
            my_shape.TextFrame.Characters.Font.Size = 24
            my_shape.TextFrame.Characters.Font.Name = "Calibri"
            my_shape.TextFrame.Characters.Font.Bold = True
            my_shape.TextFrame.Characters.Font.Color = RGB(255, 0, 0)
            my_shape.TextFrame2.VerticalAnchor = msoAnchorMiddle
            my_shape.TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
        End If
    Next my_int
End Sub
Function chng_shape_clr(Optional lwr_bnd As Integer = 100, Optional upr_bnd As Integer = 255) As Integer
    chng_shape_clr = Int((upr_bnd - lwr_bnd + 1) * Rnd + lwr_bnd)
End Function

Use of a VBA Code to Design a Complex Shape with Texts in Excel

Bước 3: Chọn Save và trở lại Excel File. Sau đó từ tab Developer chọn Macros.

Bước 4: Chọn Macro (Different_shape_with_Exceldemy) > Run.

Cuối cùng, kết quả sẽ hiển thị như hình dưới đây:

Định dạng đối tượng bằng VBA Excel

Bước 1: Trong tab Developer, chọn Visual Basic > Insert > chọn Module.

Bước 2: Nhập mã dưới đây trong Module 5.

Sub Format_my_Shape()
Dim my_shape As Shape
Worksheets(5).Shapes(1).Fill.ForeColor.RGB = RGB(192, 32, 255)
For Each my_shape In ActiveSheet.Shapes
my_shape.Flip msoFlipHorizontal
Next
End Sub

Employing VBA Code for Formatting Objects in Excel

Bước 3: Chọn Save và trở lại Excel File. Trong tab Developer > chọn Macros.

Bước 4: Chọn Macro (Format_my_Shape) > Run.

Và kết quả sẽ như hình dưới đây:

Xem thêm

Khóa học Ứng dụng VBA trong Excel

Cách thêm Combo Box trong Excel bằng VBA

Cách mở tệp PowerPoint hiện có từ Excel VBA

Cách tạo mục lục bằng VBA trong Excel

Tags