Thu phóng ảnh khi chọn sheet

Liên hệ QC

vuminh1601

Thành viên thường trực
Tham gia
7/9/07
Bài viết
336
Được thích
354
Nghề nghiệp
Kế toán
ACE cho Tôi hỏi.
Tôi muốn mỗi khi lựa chọn sheet hiện hành thì ảnh trong sheet đấy tư động phóng ra theo kích cỡ size mình chọn
(Nếu từ từ mắt thường nhìn thấy thì tốt nhât).
Khi chuyên sang sheet khác ảnh ơ sheet hiên hành lại tự động thu về Size ban đầu.
Tôi đã thử ghi macro nhưng macro không làm việc với đối tượng này. (Đây là nhược điểm của macro chăng??).
Nhờ các Bác giúp cho.
như file đính kèm
 

File đính kèm

ACE cho Tôi hỏi.
Tôi muốn mỗi khi lựa chọn sheet hiện hành thì ảnh trong sheet đấy tư động phóng ra theo kích cỡ size mình chọn
(Nếu từ từ mắt thường nhìn thấy thì tốt nhât).
Khi chuyên sang sheet khác ảnh ơ sheet hiên hành lại tự động thu về Size ban đầu.
Tôi đã thử ghi macro nhưng macro không làm việc với đối tượng này. (Đây là nhược điểm của macro chăng??).
Nhờ các Bác giúp cho.
như file đính kèm
Ví dụ như từ sheet1 kích hoạt sheet2 thì ảnh phóng to ra . Đoạn code sẽ là :
PHP:
Private Sub Worksheet_Activate()
Set a = Sheet2.Shapes(1).PictureFormat
     a.Parent.Width = 100
     a.Parent.Height = 100
Set a = Nothing
End Sub
Ngược lại Anh thử nghiên cứu tiếp nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Làm thế nào khi chọn sheet khác thì tất cả các ảnh trong file, trừ sheet hiện hành sẽ thu nhỏ lại nhỉ ?
Tiếp theo, Chọn sheet nào thì ảnh của sheet đó sẽ phóng lên.
đoạn Code

Private Sub Worksheet_Activate()
Set a = Sheet2.Shapes(1).PictureFormat
a
.Parent.Width = 100
a
.Parent.Height = 100
Set a
= Nothing
End Sub

chỉ được Sheet2 thôi ah.
 
Lần chỉnh sửa cuối:
Upvote 0
Làm thế nào khi chọn sheet khác thì tất cả các ảnh trong file, trừ sheet hiện hành sẽ thu nhỏ lại nhỉ ?
Tiếp theo, Chọn sheet nào thì ảnh của sheet đó sẽ phóng lên.
đoạn Code trên chỉ được Sheet2 thôi ah.
Câu hỏi của bạn có bị đối lập không vậy? trừ sheet hiện hành sẽ thu nhỏ lại nhỉ? Tiếp theo, Chọn sheet nào thì ảnh của sheet đó sẽ phóng lên. Sheet nào chính là sheet hiện hành rồi còn gì?
 
Upvote 0
Câu hỏi của bạn có bị đối lập không vậy? trừ sheet hiện hành sẽ thu nhỏ lại nhỉ? Tiếp theo, Chọn sheet nào thì ảnh của sheet đó sẽ phóng lên. Sheet nào chính là sheet hiện hành rồi còn gì?
Cái đồng chí này, đã đọc thì phải đọc cho hết câu chứ, chỗ này phải hiểu là như vầy nè (thêm một dấu phẩy chỗ màu xanh ấy):
Làm thế nào khi chọn sheet khác thì tất cả các ảnh trong file,trừ sheet hiện hành, sẽ thu nhỏ lại nhỉ ?
Tiếp theo, Chọn sheet nào thì ảnh của sheet đó sẽ phóng lên.
@ vuminh1601: Bạn đưa code vào trong đối tượng ThisWorkbook, khai thác 2 sự kiện: Workbook_SheetActivate và Workbook_SheetDeactivate và thay Sheet2 thành biến Sh (đã có khai báo mặc định sau tên Sub)
 
Lần chỉnh sửa cuối:
Upvote 0
Anh thử làm theo gợi ý của ANh nghiaphuc xem sao
 
Lần chỉnh sửa cuối:
Upvote 0
Cái này em cứ nghĩ ANh sẽ làm được tiếp chứ?
Tiếp cái gợi ý đó Anh sẽ gán cho nó vào một sự kiện:
PHP:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
tinh
Set a = Application.ActiveSheet.Shapes(1).PictureFormat
a.Parent.Width = 100
a.Parent.Height = 100
End Sub
Một sub phụ cho nó:
PHP:
Sub tinh()
On Error Resume Next
Dim Ws As Worksheet
For Each Ws In ActiveWorkbook.Worksheets
With Ws
Set a = .Shapes(1).PictureFormat
a.Parent.Width = 1
a.Parent.Height = 1
End With
  Next
End Sub
Mình nghĩ là không nên dùng sub Tinh mà thay vào đó là sub Workbook_SheetDeactivate sẽ đỡ hơn, vì sử dụng sub Tinh thì mỗi lần đổi sheet, code sẽ duyệt qua tất cả các sheet có trong Workbook, và việc này gây mất thời gian không cần thiết. Thay vào đó, sử dụng sub Workbook_SheetDeactivate thì mỗi lần sheet nào bị bỏ chọn (Deactivate) thì hình ảnh của sheet đó tự động thu nhỏ lại.
 
Upvote 0
Mình nghĩ là không nên dùng sub Tinh mà thay vào đó là sub Workbook_SheetDeactivate sẽ đỡ hơn, vì sử dụng sub Tinh thì mỗi lần đổi sheet, code sẽ duyệt qua tất cả các sheet có trong Workbook, và việc này gây mất thời gian không cần thiết. Thay vào đó, sử dụng sub Workbook_SheetDeactivate thì mỗi lần sheet nào bị bỏ chọn (Deactivate) thì hình ảnh của sheet đó tự động thu nhỏ lại.
Ẹc Bác nhanh quá. Khi gửi bài lên thấy bài bác đưa lên nên em xoá đi.
Vậy tổng kết chủ đề của Anh lại sẽ là :
PHP:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Set a = Application.ActiveSheet.Shapes(1).PictureFormat
a.Parent.Width = 1000
a.Parent.Height = 500
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Set a = Sh.Shapes(1).PictureFormat
a.Parent.Width = 1
a.Parent.Height = 1
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn khoavu87 và bác nghiaphuc vậy có cách nào cho ảnh của sh được chọn sẽ phóng to dần dần (đủ để mắt thường nhìn thấy) được không?

Có thể giới hạn max size ảnh bằng hàng và cột trong Sh được không?
 
Upvote 0
Cám ơn khoavu87 và bác nghiaphuc vậy có cách nào cho ảnh của sh được chọn sẽ phóng to dần dần (đủ để mắt thường nhìn thấy) được không?

Có thể giới hạn max size ảnh bằng hàng và cột trong Sh được không?
Bạn thử coi này xem sao
PHP:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With Sh.Shapes(1)
     .Width = Sh.Range("a1").Width
    .Height = Sh.Range("a1").Height
    .Left = Sh.Range("a1").Left
    .Top = Sh.Range("a1").Top
End With
End Sub
 
Upvote 0
Cám ơn khoavu87 và bác nghiaphuc vậy có cách nào cho ảnh của sh được chọn sẽ phóng to dần dần (đủ để mắt thường nhìn thấy) được không?

Có thể giới hạn max size ảnh bằng hàng và cột trong Sh được không?
ANh thử áp dụng Cấu trúc Do Loop xem sao?
PHP:
  Dim t As Double
 t = Timer
Do
      If Timer - t > 1 Then
         t = Timer
         Exit Do
      End If
Loop
Hoặc anh có thể làm thế này (Theo em là ưng ý nhất tạo sự kiện dừng code )
PHP:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Set a = Sh.Shapes(1).PictureFormat
For i = 0 To 5
a.Parent.Width = 100 + i
a.Parent.Height = 50 + i
Dim PauseTime, Start
PauseTime = 1
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop
Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom