Note: The other languages of the website are Google-translated. Back to English

Làm cách nào để tự động thay đổi kích thước hình dạng dựa trên / phụ thuộc vào giá trị ô đã chỉ định trong Excel?

Nếu bạn muốn tự động thay đổi kích thước hình dạng dựa trên giá trị của một ô được chỉ định, bài viết này có thể giúp bạn.

Tự động thay đổi kích thước hình dạng dựa trên giá trị ô được chỉ định với mã VBA


Tự động thay đổi kích thước hình dạng dựa trên giá trị ô được chỉ định với mã VBA

Mã VBA sau có thể giúp bạn thay đổi kích thước hình dạng nhất định dựa trên giá trị ô được chỉ định trong trang tính hiện tại. Hãy làm như sau.

1. Bấm chuột phải vào tab trang tính có hình dạng bạn cần thay đổi kích thước, rồi bấm Mã Chế độ xem từ menu chuột phải.

2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, sao chép và dán mã VBA sau vào cửa sổ Mã.

Mã VBA: Tự động thay đổi kích thước hình dạng dựa trên giá trị ô được chỉ định trong Excel

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Row = 2 And Target.Column = 1 Then
        Call SizeCircle("Oval 2", Val(Target.Value))
    End If
End Sub
Sub SizeCircle(Name As String, Diameter)
    Dim xCenterX As Single
    Dim xCenterY As Single
    Dim xCircle As Shape
    Dim xDiameter As Single
    On Error GoTo ExitSub
    xDiameter = Diameter
    If xDiameter > 10 Then xDiameter = 10
    If xDiameter < 1 Then xDiameter = 1
    Set xCircle = ActiveSheet.Shapes(Name)
    With xCircle
        xCenterX = .Left + (.Width / 2)
        xCenterY = .Top + (.Height / 2)
        .Width = Application.CentimetersToPoints(xDiameter)
        .Height = Application.CentimetersToPoints(xDiameter)
        .Left = xCenterX - (.Width / 2)
        .Top = xCenterY - (.Height / 2)
    End With
ExitSub:
End Sub

Chú thích: Trong mã, “Hình bầu dục 2”Là tên hình dạng mà bạn sẽ thay đổi kích thước của nó. Và Hàng = 2, Cột = 1 nghĩa là kích thước của hình dạng “Hình bầu dục 2” sẽ được thay đổi với giá trị trong A2. Vui lòng thay đổi chúng khi bạn cần.

Để tự động thay đổi kích thước nhiều hình dạng dựa trên các giá trị ô khác nhau, vui lòng áp dụng mã VBA bên dưới.

Mã VBA: Tự động thay đổi kích thước nhiều hình dạng dựa trên giá trị của các ô được chỉ định khác nhau trong Excel

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xAddress As String
    On Error Resume Next
    If Target.CountLarge = 1 Then
        xAddress = Target.Address(0, 0)
        If xAddress = "A1" Then
            Call SizeCircle("Oval 1", Val(Target.Value))
        ElseIf xAddress = "A2" Then
            Call SizeCircle("Smiley Face 3", Val(Target.Value))
        ElseIf xAddress = "A3" Then
            Call SizeCircle("Heart 2", Val(Target.Value))
        End If
    End If
End Sub

Sub SizeCircle(Name As String, Diameter)
    Dim xCenterX As Single
    Dim xCenterY As Single
    Dim xCircle As Shape
    Dim xDiameter As Single
    On Error GoTo ExitSub
    xDiameter = Diameter
    If xDiameter > 10 Then xDiameter = 10
    If xDiameter < 1 Then xDiameter = 1
    Set xCircle = ActiveSheet.Shapes(Name)
    With xCircle
        xCenterX = .Left + (.Width / 2)
        xCenterY = .Top + (.Height / 2)
        .Width = Application.CentimetersToPoints(xDiameter)
        .Height = Application.CentimetersToPoints(xDiameter)
        .Left = xCenterX - (.Width / 2)
        .Top = xCenterY - (.Height / 2)
    End With
ExitSub:
End Sub

Ghi chú:

1) Trong mã, “Hình bầu dục 1","Mặt cười 3"Và"Heart 3”Là tên của các hình dạng mà bạn sẽ tự động thay đổi kích thước của chúng. Và A1, A2A3 là các ô mà bạn sẽ tự động thay đổi kích thước hình dạng dựa trên giá trị.
2) Nếu bạn muốn thêm nhiều hình dạng, vui lòng thêm dòng "ElseIf xAddress = "A3" Sau đó"và "Call SizeCircle (" Heart 2 ", Val (Target.Value))"phía trên đầu tiên"Cuối Nếu"trong mã. Và thay đổi địa chỉ ô và tên hình dạng dựa trên nhu cầu của bạn.

3. nhấn Khác + Q các phím đồng thời để đóng Microsoft Visual Basic cho các ứng dụng cửa sổ.

Từ bây giờ, khi bạn thay đổi giá trị trong ô A2, kích thước của hình Oval 2 sẽ được thay đổi tự động. Xem ảnh chụp màn hình:

Hoặc thay đổi các giá trị trong ô A1, A2 và A3 để tự động thay đổi kích thước các hình dạng tương ứng "Hình bầu dục 1", "Mặt cười 3" và "Trái tim 3". Xem ảnh chụp màn hình:

Chú thích: Kích thước hình dạng sẽ không còn thay đổi khi giá trị ô lớn hơn 10.


Liệt kê và xuất tất cả các hình dạng trong sổ làm việc Excel hiện tại:

Mô hình Xuất đồ họa tiện ích của Kutools cho Excel giúp bạn nhanh chóng liệt kê tất cả các hình dạng trong sổ làm việc hiện tại và bạn có thể xuất tất cả chúng vào một thư mục nhất định cùng một lúc như ảnh chụp màn hình dưới đây. Tải xuống và thử ngay bây giờ! (30-ngày đường mòn miễn phí)


Các bài liên quan:


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (16)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm thế nào bạn sẽ thực hiện điều này với nhiều hình dạng, mỗi hình dạng tùy thuộc vào các ô khác nhau?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ngọc thân mến,
Bài viết được cập nhật phần mã mới giúp bạn có thể thực thi với nhiều hình dạng mỗi ô tùy thuộc vào các ô khác nhau. Cảm ơn bình luận của bạn.

Trân trọng,
Pha lê
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm cách nào để đặt tên cho hình dạng của tôi? Trong ví dụ của bạn ở trên, làm thế nào để bạn gán tên Hình bầu dục 2 cho hình tròn bạn đã vẽ?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ranjit thân mến,
Để đặt tên cho một hình dạng, vui lòng chọn hình dạng này, nhập tên hình dạng vào Hộp Tên, sau đó nhấn phím Enter. Xem hình ảnh dưới đây được hiển thị.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, làm cách nào để sao chép giống nhau cho nhiều hình được liên kết với nhiều ô trong cùng một mô-đun?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Abhinaya thân mến,
Bài viết được cập nhật phần mã mới giúp bạn có thể thực thi với nhiều hình dạng mỗi ô tùy thuộc vào các ô khác nhau. Cảm ơn bình luận của bạn.

Trân trọng,
Pha lê
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Tôi đã cố gắng sử dụng bài đăng của bạn để viết mã VBA của riêng tôi nhưng dường như không đi được xa lắm. Chủ yếu là vì tôi không thực sự hiểu VBA và tôi chỉ đang cố gắng điều chỉnh của bạn. Tôi đã tự hỏi nếu bạn có thể giúp đỡ. Tôi muốn thay đổi chiều dài của hình chữ nhật tùy thuộc vào giá trị trong ô. Tôi muốn chiều rộng nếu hình chữ nhật được giữ nguyên nhưng chiều dài thay đổi. Tôi muốn cả hai đỉnh bên trái ở cùng một vị trí và nó sẽ kéo dài sang bên phải. Điều này có khả thi không?
Cảm ơn bạn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Lan thân mến,
Hy vọng mã VBA sau đây có thể giải quyết vấn đề của bạn. (Vui lòng thay hình bầu dục 1 bằng tên hình dạng của riêng bạn)

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Nếu Target.Row = 2 và Target.Column = 1 thì
Call SizeCircle ("Hình bầu dục 1", Val (Target.Value))
Cuối Nếu
End Sub
Kích thước phụ Hình tròn (Tên là Chuỗi, Đường kính)
Dim xCircle Như hình dạng
Dim xDiameter dưới dạng đơn
Về lỗi GoTo ExitSub
xDiameter = Đường kính
Nếu xDiameter> 10 thì xDiameter = 10
Nếu xDiameter <1 thì xDiameter = 1
Đặt xCircle = ActiveSheet.Shapes (Tên)
xCircle.ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft
Với xCircle
.LockAspectRatio = msoFalse
.Width = Application.CentimetersToPoints (xDiameter)
Kết thúc với
ThoátSub:
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, có cách nào để tôi có thể làm cho hình dạng mở rộng theo hai chiều (thay vì tăng kích thước hình dạng lên 5, hãy tăng nó 5 theo chiều ngang và 3 theo chiều dọc)?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Sam thân mên,
Tập lệnh VBA sau đây có thể giúp bạn giải quyết vấn đề. Và hai kích thước là ô A1 và B1.

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Nếu Target.Count = 1 thì
Nếu Không Giao nhau (Mục tiêu, Phạm vi ("A1: B1")) thì Không có gì
Gọi SizeCircle ("Hình bầu dục 2", Mảng (Val (Phạm vi ("A1"). Giá trị), Val (Phạm vi ("B1"). Giá trị)))
Cuối Nếu
Cuối Nếu
End Sub
Kích thước phụ Hình tròn (Tên là chuỗi, Arr là biến thể)
Dim I As Long
Dim xCenterX dưới dạng đơn
Dim xCenterY dưới dạng đơn
Dim xCircle Như hình dạng
Về lỗi GoTo ExitSub
Đối với I = 0 Đến UBound (Arr)
Nếu Arr (I)> 10 Thì
Arr (I) = 10
ElseIf Arr (I) <1 Thì
Arr (I) = 1
Cuối Nếu
Sau
Đặt xCircle = ActiveSheet.Shapes (Tên)
Với xCircle
xCenterX = .Left + (.Width/2)
xCenterY = .Top + (.Height / 2)
.Width = Application.CentimetersToPoints (Arr (0))
.Height = Application.CentimetersToPoints (Arr (1))
.Left = xCenterX - (.Width/2)
.Top = xCenterY - (.Height / 2)
Kết thúc với
ThoátSub:
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có cách nào để làm điều này với Hình ảnh không? Tôi dường như không gặp may khi sử dụng mã như đã đăng.

5 Hình ảnh trong bảng xếp hạng, tôi muốn Hình ảnh ở vị trí thứ nhất hoặc gắn ở vị trí thứ nhất lớn hơn. Do đó, tôi đã cố định 1 kích thước hình ảnh, hoặc 1x2 cho vị trí đầu tiên hoặc 1x2 cho vị trí đầu tiên (ví dụ). Tôi đã thiết lập xếp hạng nên có thể sử dụng điều đó để tạo kích thước trong các ô cụ thể cho từng hình ảnh (tức là sử dụng câu lệnh IF để IF RANK là kích thước thứ nhất chiều rộng là 2). VBA của tôi khá yếu.

Về cơ bản, tôi muốn - cập nhật trên trang tính - nhìn vào các ô kích thước hình ảnh và đặt từng kích thước hình ảnh thành kết quả ô kích thước hình ảnh cụ thể. Tôi không thể thấy trong VBA ở trên cách hoạt động chính xác nhưng tôi nghĩ nó sẽ dễ dàng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Crytal,

Cho em hỏi, nếu có cách nào để chọn màu (red cell = red form) và đặt tên từ các ô cụ thể. nó cũng có thể tạo biểu mẫu tự động từ VBA?

Cảm ơn trước :)

Hát
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Crytal
Nếu để xác định cạnh của hình lập phương, tam giác, hình hộp mà phải xác định dựa vào chiều dài, chiều rộng thì sao? Làm ơn giúp tôi

Cảm ơn bạn
cái ghế
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Chairil,
Xin lỗi không thể giúp bạn với điều đó được nêu ra. Cám ơn bạn đã góp ý.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
có cách nào để điều này hoạt động nếu ô bạn sử dụng để đặt kích thước là kết quả của một công thức thay vì chỉ là một giá trị tĩnh mà bạn nhập thủ công không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào mathnz, Đoạn mã VBA dưới đây có thể giúp bạn giải quyết vấn đề. Bạn chỉ cần thay đổi các ô giá trị và tên hình dạng trong mã dựa trên dữ liệu của riêng bạn.
Private Sub Worksheet_Calculate ()
'Cập nhật Extendoffice 20211105
On Error Resume Next
Gọi SizeCircle ("Hình bầu dục 1", Val (Phạm vi ("A1"). Giá trị)) 'A1 là ô giá trị, Hình bầu dục 1 là tên hình dạng
Call SizeCircle ("Mặt cười 2", Val (Phạm vi ("A2"). Giá trị))
Gọi SizeCircle ("Heart 3", Val (Range ("A3"). Giá trị))

End Sub
Private Sub Worksheet_Change (ByVal Target As Range)
Dim xaddress dưới dạng chuỗi
On Error Resume Next
Nếu Target.CountLarge = 1 Thì
xAddress = Target.Address (0, 0)
Nếu xAddress = "A1" Thì
Call SizeCircle ("Hình bầu dục 1", Val (Target.Value))
ElseIf xAddress = "A2" Sau đó
Call SizeCircle ("Mặt cười 2", Val (Target.Value))
ElseIf xAddress = "A3" Sau đó
Call SizeCircle ("Heart 3", Val (Target.Value))

Cuối Nếu
Cuối Nếu
End Sub

Kích thước phụ Hình tròn (Tên là Chuỗi, Đường kính)
Dim xCenterX dưới dạng đơn
Dim xCenterY dưới dạng đơn
Dim xCircle Như hình dạng
Dim xDiameter dưới dạng đơn
Về lỗi GoTo ExitSub
xDiameter = Đường kính
Nếu xDiameter> 10 thì xDiameter = 10
Nếu xDiameter <1 thì xDiameter = 1
Đặt xCircle = ActiveSheet.Shapes (Tên)
Với xCircle
xCenterX = .Left + (.Width/2)
xCenterY = .Top + (.Height / 2)
.Width = Application.CentimetersToPoints (xDiameter)
.Height = Application.CentimetersToPoints (xDiameter)
.Left = xCenterX - (.Width/2)
.Top = xCenterY - (.Height / 2)
Kết thúc với
ThoátSub:
End Sub

Không có bình luận nào được đăng ở đây

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL