Hỏi về Width Properties

Liên hệ QC

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,952
Tôi mò VBA và thấy có lệnh Range(...).Width
Tôi làm thí nghiệm sau:
PHP:
Sub Test()
 Dim Rng As Range
 Set Rng = Application.InputBox(Prompt:="Chon vung", Type:=8)
 MsgBox Rng.Width
End Sub
Nhìn kết quả mà hỏng hiểu nó là cái gì... Chỉ biết rằng kết quả sẽ thay đổi khi độ rộng cột thay đổi... Bấm F1 thì thấy nó nói sơ sài quá, lại không có ví dụ nên cũng NGU luôn
Xin các cao thủ giải thích dùm:
- Width Properties dùng vào việc gì?
- Trong trường hợp nó đi kèm với 1 Range (Range(...).Width) thì nó thể hiện cái gì?
 
bài này đã có VD về Combobox (Object) thay thế Validation luôn di chuyển cùng với ô được chọn rồi mà.


Thân!

Đó là ô chọn còn câu hỏi ở đây là Shape chọn khác nhau xa.

Macro này cần được gán vào 1 biểu tượng trên thanh công cụ thì mới thực hiện đúng với shape đang được chọn trong cửa sổ hiện thời.

PHP:
Sub MoveShape()
'Dim sha As Shape
Dim ce As Range
On Error Resume Next
    With ActiveWindow.Selection.ShapeRange(1)
      Set ce = .TopLeftCell
      .Top = ce.Offset(-1, 0).Top   ' điều chỉnh các tham số di chuyển nếu muốn
      .Left = ce.Offset(0,0).Left     ' ...
    End With
End Sub

-hvl-

Đúng rồi, cảm ơn bạn,
Không cần phải biểu tượng đâu / có thể gán phím tắt hay RUN cũng được
bản chất ở đấy là ce
 
Lần chỉnh sửa cuối:
Upvote 0
Đó là ô chọn còn câu hỏi ở đây là Shape chọn khác nhau xa.

Đọc lại xíu :

bài này đã có VD về Combobox (Object) thay thế Validation luôn di chuyển cùng với ô được chọn rồi mà.

Mình không nói ô chọn, ở đây Shapes là một Object, Combobox cũng là một Objecct, vì vậy việc điều khiển cũng tương tự nhau thôi.
Bài toán ở đây đều là điều khiển Object theo vị trí của một Cell nào đấy (vị trí đó có thể thay đổi)

Theo như VD trên của mình, thay đổi xíu là được:

Code nhằm làm cho Shapes luôn nằm vừa trong ô dưới ô chọn 1 hàng và một cột (Có thể thay đổi lại vị trí hiển thị của Shapes, dù ô đó to hay nhỏ.
PHP:
Sub MoveShape()
    Dim Obj As Shape
    Set Obj = ActiveSheet.Shapes("Okebab")
    With Obj
        .Left = ActiveCell.Offset(1, 1).Left
        .Top = ActiveCell.Offset(1, 1).Top
        .Width = ActiveCell.Offset(1, 1).Width
        .Height = ActiveCell.Offset(1, 1).Height
    End With
    Set Obj = Nothing
    Call DoiMau(ActiveCell.Row + ActiveCell.Column)
End Sub
Code này nhằm làm cho Shapes đổi màu tùy theo vị trí của Cell được chọn. Cái này chỉ là hoa lá cành thôi.

PHP:
Sub DoiMau(Bebe As Long)
    Dim Obj As Shape
    Set Obj = ActiveSheet.Shapes("Okebab")
    Bebe = Bebe Mod 3
    With Obj.Fill
        If Bebe = 0 Then
            .BackColor.RGB = RGB(255, 130, 0)
            .PresetGradient msoGradientHorizontal, 3, msoGradientEarlySunset
        ElseIf Bebe = 1 Then
            .BackColor.RGB = RGB(0, 92, 191)
            .PresetGradient msoGradientHorizontal, 3, msoGradientOcean
        ElseIf Bebe = 2 Then
            .BackColor.RGB = RGB(77, 8, 8)
            .PresetGradient msoGradientHorizontal, 4, msoGradientFire
        End If

    End With
End Sub
Khởi động:

PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call MoveShape
End Sub
Thân!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom