Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

Tiêu đề: [Hỏi] Căn chỉnh vị trí shape trong excel [In trang]

Tác giả: anhluoc    Thời gian: 5/6/2016 18:30
Tiêu đề: [Hỏi] Căn chỉnh vị trí shape trong excel
Chào cả nhà ! Mình đã thử seach nhưng không tìm được cách căn chỉnh shape làm sao cho khi thay đổi bề rộng ô trong excel thì shape luôn nằm giữa ô ! ACE nào biết xin chỉ giúp, code VBA cũng được, tôt nhất là làm trên excel không dùng VBA (nếu được ) . Xin cảm ơn !
Tác giả: Duchai108    Thời gian: 6/6/2016 14:08
Ví dụ cụ thể là như thế nào đi bạn, mình thấy nó cho phép chỉnh sửa mà :)

Tác giả: anhluoc    Thời gian: 6/6/2016 18:55
Duchai108 gửi lúc 6/6/2016 14:08
Ví dụ cụ thể là như thế nào đi bạn, mình thấy nó cho phép chỉnh sửa mà :)

Ví dụ : Mình vẽ 1 line vào cell nào đó, căn vào giữa dòng ( tương đối) nhưng khi kéo dãn  dòng thì line đó sẽ bị lệch không còn chính giữa ô. Mình muốn dùng lệnh để căn nó về đúng giữa cell ( giống như căn chữ ). ít thì làm thủ công được chứ nhiều thì không khả thi. Mình đã thử mò code vba nhưng chưa như ý muốn. Mình làm để thiết kế bảng thống kê thép trên excel (mình thích tự làm,dễ kiểm soát). Cảm ơn bạn đã quan tâm !
Tác giả: Duchai108    Thời gian: 6/6/2016 21:21
anhluoc gửi lúc 6/6/2016 18:55
Ví dụ : Mình vẽ 1 line vào cell nào đó, căn vào giữa dòng ( tương đối) nhưng khi  ...

Theo mình hiểu thì shape là hình vẽ thủ công, khi chọn vào hình vẽ thì các chức năng căn chỉnh dữ liệu trong ô cell không sử dụng được nên sẽ không thể căn chỉnh như dữ liệu được. Mình cũng ít làm cái này, bạn thử tìm hiểu một số file thống kê thép có trong thư viện xem.
Tác giả: Tangvanphe    Thời gian: 6/6/2016 21:58
Bạn vào thẻ Find & Select chọn Slect object, khi đó bạn quét chọn vùng có chứa Shape sẽ chọn được tất cả các Shape trong vùng đó, rồi căn chỉnh các shape đã chọn đó chắc đỡ hơn làm thủ công từng cái. Bạn tham khảo và thử xem sao
Tác giả: tranhungdao12a3    Thời gian: 8/6/2016 14:12
Xài vầy đi bạn:
[Visual Basic] 纯文本查看 复制代码
Sub shapecenter() 
    Dim Row As Integer
    Dim Shp As Shape
    For Each Shp In ActiveSheet.Shapes
        Shp.Select
        Dim vSel As Variant
        Dim rngZ As Range
        Set vSel = Selection
        If VarType(vSel) = vbObject Then
            With vSel
                Set rngZ = .TopLeftCell
                .Top = rngZ.Top + (rngZ.Height - .Height) / 2
                .Left = rngZ.Left + (rngZ.Width - .Width) / 2
                .ShapeRange.LockAspectRatio = -1
                .Placement = xlMoveAndSize
                .PrintObject = True
            End With
            rngZ.Select
        End If
    Next
End Sub


P/s: Đặt trong sự kiện selectionchange thì nó thay đổi trực tiếp.

Tác giả: tungbo2202    Thời gian: 8/6/2016 16:25
anhluoc gửi lúc 6/6/2016 18:55
Ví dụ : Mình vẽ 1 line vào cell nào đó, căn vào giữa dòng ( tương đối) nhưng khi  ...

Nếu để thống kê thép thì mình chia sẻ cho bạn file này, mình vẫn dùng khá ổn
https://www.fshare.vn/file/PC9149KWIL8Z
Tác giả: anhluoc    Thời gian: 13/6/2016 13:16
Thôi xong, đúng là không bẫy lỗi thì thử táy máy đến lần thứ 3 là đơ máy luôn, hic. Em thử mò cái sự kiện không biết nó đúng hay sai mà giờ nó nháy liên tục, hik

Tác giả: tranhoe    Thời gian: 15/6/2016 09:35
anhluoc gửi lúc 13/6/2016 13:16
Thôi xong, đúng là không bẫy lỗi thì thử táy máy đến lần thứ 3 là đơ máy luôn, h ...

Sự kiện Selectionchange mặc định sẽ chạy khi có sửa đổi bất kỳ cell nào trong Sheet, vì vậy cần bẫy lỗi, ví dụ chỉ chạy khi sửa cột E (chứa các shape) nhưng như vậy thì toàn bộ các shape trong cột E đều được căn chỉnh, điều này không cần thiết vì các shape ở trên đã được căn chỉnh rồi.

Tốt nhất là Sub shapecenter chỉ tạo lệnh tắt để chạy khi cần, tức là muốn căn chỉnh 1 shape nào thì chọn cell chứa nó rồi bấm lệnh tắt để chạy macro.
Tác giả: anhluoc    Thời gian: 18/6/2016 06:50
tranhoe gửi lúc 15/6/2016 09:35
Sự kiện Selectionchange mặc định sẽ chạy khi có sửa đổi bất kỳ cell nào trong Sheet, ...

Cảm ơn Bác Hòe đã nhiệt tình giúp đỡ ạ !
Đúng là hôm trước em có chạy thử 02 shape thì nó căn ngon lành, vẽ thêm cái thứ ba thì nó nháy nháy liên tục rồi đơ luôn. Em đã đặt trong sự kiện selection_Change được rồi nhưng chưa biết cấu lệnh bẫy lỗi đặt ở đâu thì khi chạy (thay đổi ô bất kỳ ) tất cả các shape sẽ được chỉnh lại. Em sẽ thử dùng cách dùng lệnh tắt bác đã chỉ ! Cảm ơn Bác nhé !
Tác giả: hoangdoan0101    Thời gian: 28/10/2016 09:13
Bạn tạo shape để chạy marco (nút bấm) hay là để làm trình bày gì đấy.
Nhưng theo mình biết nếu bạn tạo 1 form control (trong Deverloper chọn Insert -> Form control, đặc biệt của Form control là bạn có thể Format tự động nó theo chiều rộng cột hoặc chiều cao dòng (hoặc bỏ chế độ này).
Bạn thử xem




Chào mừng ghé thăm Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng (https://xaydung360.vn/diendan/) Powered by Discuz! X3.2