Chèn hình bằng CODE

Liên hệ QC

Phan Thanh Tam

Thành viên mới
Tham gia
19/4/21
Bài viết
9
Được thích
2
Xin chào mọi người,
mình tên Tâm.

Mình có một đoạn code VBA dùng để chèn hình ảnh vào báo cáo.
Mình muốn đoạn code bắt đầu chạy khi nhấn nút bắt đầu, và kết thúc khi nhấn nút kết thúc thì phải làm thế nào vậy ạ?
Mong mọi người, ai biết hướng dẫn giúp dùm mình.
mình có gửi file đính kèm, mọi người xem hộ mình với.
Xin cảm ơn.

CODE của mình như sau:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim myF As Variant
Dim mySp As Object
Dim myAD1 As String
Dim myAD2 As String
Dim myHH As Double
Dim myWW As Double
Dim myHH2 As Double
Dim myWW2 As Double



Cancel = True



'===============chon lua hinh anh
myF = Application.GetOpenFilename _
("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "chon hinh anh", , False)
If myF = False Then
MsgBox "vui long chon hinh anh"
Exit Sub
End If
'===============xoa hinh anh
For Each mySp In ActiveSheet.Shapes
myAD1 = mySp.TopLeftCell.MergeArea.Address
myAD2 = Target.Address
If myAD1 = myAD2 Then mySp.Delete
Next
'===============dan hinh anh
Set mySp = ActiveSheet.Shapes.AddPicture(Filename:=myF, LinkToFile:=False, _
SaveWithDocument:=True, Left:=Target.Left, Top:=Target.Top, _
Width:=0, Height:=0) '★tam dat bang 0
mySp.ScaleHeight 1, msoTrue '★quay ve kich co truoc
mySp.ScaleWidth 1, msoTrue '★quay ve kich co truoc
'===============duy tri ti le ngang doc
If mySp.Width > Target.Width Then mySp.Width = Target.Width
If mySp.Height > Target.Height Then mySp.Height = Target.Height
'===============can chinh giua
myHH2 = (Target.Height / 2) - (mySp.Height / 2)
myWW2 = (Target.Width / 2) - (mySp.Width / 2)
mySp.Top = Target.Top + myHH2
mySp.Left = Target.Left + myWW2



Set mySp = Nothing



End Sub

chen-anh.JPG
 

File đính kèm

  • chen anh.xlsm
    51.1 KB · Đọc: 7
Muốn người ta giúp mình thì nói sao cho người ta hiểu ý.
Có thể hiểu "nút bắt đầu" vì nó là tiếng kèn để thức dậy, là tiếng hô để xung phong lên tiêu diệt địch, là tín hiệu mở màn cái gì đó. Nó xác định thời điểm khi mà cái gì đó được thực hiện. Còn "nút kết thúc" để làm gì?

Nếu tôi đọc và hiểu code thì mỗi lần đúp chuột ở một ô nào đó thì ảnh được chọn sẽ được chèn vào ô đó. Mỗi đúp chuột chỉ chèn 1 ảnh, vậy muốn kết thúc trò chơi thì đừng đúp chuột nữa, sao lại phải cần tới cái gọi là "nút kết thúc"?

Hay là ý khác? Là không đúp chuột 3 lần, không chọn ảnh 3 lần (mỏi tay, tay to ra, không muốn nhọc công?), chỉ nhấn "nút bắt đầu" thì code sẽ tự lấy 3 ảnh và chèn vào 3 vùng cần chèn ảnh? Nếu thế thì đường dẫn 3 ảnh lấy từ đâu, địa chỉ 3 vùng lấy từ đâu, thậm chí con số 3 lấy từ đâu? Lấy từ trên trần nhà à?

Tóm lại hãy mô tả các việc mà code phải làm sau khi nhấn "nút bắt đầu".
 
Upvote 0
Muốn người ta giúp mình thì nói sao cho người ta hiểu ý.
Có thể hiểu "nút bắt đầu" vì nó là tiếng kèn để thức dậy, là tiếng hô để xung phong lên tiêu diệt địch, là tín hiệu mở màn cái gì đó. Nó xác định thời điểm khi mà cái gì đó được thực hiện. Còn "nút kết thúc" để làm gì?

Nếu tôi đọc và hiểu code thì mỗi lần đúp chuột ở một ô nào đó thì ảnh được chọn sẽ được chèn vào ô đó. Mỗi đúp chuột chỉ chèn 1 ảnh, vậy muốn kết thúc trò chơi thì đừng đúp chuột nữa, sao lại phải cần tới cái gọi là "nút kết thúc"?

Hay là ý khác? Là không đúp chuột 3 lần, không chọn ảnh 3 lần (mỏi tay, tay to ra, không muốn nhọc công?), chỉ nhấn "nút bắt đầu" thì code sẽ tự lấy 3 ảnh và chèn vào 3 vùng cần chèn ảnh? Nếu thế thì đường dẫn 3 ảnh lấy từ đâu, địa chỉ 3 vùng lấy từ đâu, thậm chí con số 3 lấy từ đâu? Lấy từ trên trần nhà à?

Tóm lại hãy mô tả các việc mà code phải làm sau khi nhấn "nút bắt đầu".
Xin lỗi nếu bài viết của mình có làm Bạn thấy khó chịu. Mình sẽ rút kinh nghiệm để lần sau trình bày rõ ràng hơn.

Mình cũng xin giải thích mong muốn của mình, mong bạn biết thì hỗ trợ giúp.

Ý nghĩa đoạn code thì giống như bạn nói, nhấp chuột 2 lần vào ô nào thì sẽ chèn 1 hình vào ô đó.
Cũng chính vì vậy mà đối với những ô muốn gõ hoặc chỉnh sửa văn bản thì không nhấp đúp được, chỉ có nhấn F2, hoặc đưa chuột lên thanh Formula bar mới sửa được nội dung.

mình muốn như sau:
1) khi mở file excel lên thì vẫn là file excel bình thường, vẫn thao tác gõ chữ, chỉnh sửa (nhấp đúp chuột sẽ không phải là chèn hình)
2) sau đó, khi bắt đầu muốn chèn hình thì ấn nút bắt đầu, code sẽ chạy (nhấp đúp chuột sẽ là chèn hình)
3) sau khi chèn hình xong, ấn nút kết thúc để dừng code, quay lại thao tác với chữ (nhấp đúp chuột không phải là chèn hình)

Bạn có hỏi nút kết thúc để làm gì? vì nếu không kết thúc đoạn code thì cứ nhấp chuột 2 lần nó sẽ bắt chọn hình ấy.
Vì mình mới tự học VBA nên còn mù mịt lắm.

Xin chân thành cảm ơn Bạn.
 
Upvote 0
Mẫu báo cáo đơn giản như thế này, nhưng phải làm việc với cả hình và chữ nên mình tìm cách định dạng hình giúp rút ngắn thời gian và công sức chỉnh sửa kích thước hình thôi.
 

File đính kèm

  • ①建物診断劣化報告書_目次P1~106.jpg
    ①建物診断劣化報告書_目次P1~106.jpg
    94 KB · Đọc: 20
Upvote 0
Xin lỗi nếu bài viết của mình có làm Bạn thấy khó chịu. Mình sẽ rút kinh nghiệm để lần sau trình bày rõ ràng hơn.

Mình cũng xin giải thích mong muốn của mình, mong bạn biết thì hỗ trợ giúp.

Ý nghĩa đoạn code thì giống như bạn nói, nhấp chuột 2 lần vào ô nào thì sẽ chèn 1 hình vào ô đó.
Cũng chính vì vậy mà đối với những ô muốn gõ hoặc chỉnh sửa văn bản thì không nhấp đúp được, chỉ có nhấn F2, hoặc đưa chuột lên thanh Formula bar mới sửa được nội dung.

mình muốn như sau:
1) khi mở file excel lên thì vẫn là file excel bình thường, vẫn thao tác gõ chữ, chỉnh sửa (nhấp đúp chuột sẽ không phải là chèn hình)
2) sau đó, khi bắt đầu muốn chèn hình thì ấn nút bắt đầu, code sẽ chạy (nhấp đúp chuột sẽ là chèn hình)
3) sau khi chèn hình xong, ấn nút kết thúc để dừng code, quay lại thao tác với chữ (nhấp đúp chuột không phải là chèn hình)

Bạn có hỏi nút kết thúc để làm gì? vì nếu không kết thúc đoạn code thì cứ nhấp chuột 2 lần nó sẽ bắt chọn hình ấy.
Vì mình mới tự học VBA nên còn mù mịt lắm.

Xin chân thành cảm ơn Bạn.
Hy vọng đúng ý.
 

File đính kèm

  • chen anh.xlsm
    50 KB · Đọc: 38
Upvote 0
Web KT
Back
Top Bottom