Thay thế 1 đoạn code mà đoạn code đó để ở 1 ô

Liên hệ QC

hoanglocphat

Thành viên thường trực
Tham gia
27/1/13
Bài viết
258
Được thích
30
Các bạn cho hỏi có cách nào thay thế 1 đoạn code mà đoạn code đó để ở 1 ô
Ví dụ tôi có 1 đoạn code
PHP:
With Sheets("Tonghop")
.....
End With
Bây giờ tôi muốn đặt chữ Tonghop trong ô A1 của Sheet HuongDan
Thì có cách nào không? Và nếu có thì code trên phải sửa như thế nào?
Cảm ơn các bạn!
 
Các bạn cho hỏi có cách nào thay thế 1 đoạn code mà đoạn code đó để ở 1 ô
Ví dụ tôi có 1 đoạn code
PHP:
With Sheets("Tonghop")
.....

End With
Bây giờ tôi muốn đặt chữ Tonghop trong ô A1 của Sheet HuongDan
Thì có cách nào không? Và nếu có thì code trên phải sửa như thế nào?
Cảm ơn các bạn!
Thử
Mã:
ten = sheets("Huongdan").range("A1").value
with sheets("& ten &")
.......
end with
 
Upvote 0
Upvote 0
#tác giả bài #3:
@Thớt: Thử code này xem
Mã:
With Sheets(CStr(Sheets("HuongDan").Range("A1").Value))
...
End With

Tôi tính gởi giải đáp thì bạn đã gởi trước tôi. Vì vậy tôi xoá phần ấy đi và thêm phần này:
Hàm CStr ở trên bảo đảm nếu giá trị là số thì nó vẫn tính thành chuỗi. Nếu không có hàm CStr thì nó sẽ coi như số ấy là chỉ số để lấy từ collection WorkSheets

Thử
Mã:
ten = sheets("Huongdan").range("A1").value
with sheets("& ten &")
.......
end with
Code này sẽ chạy ra error. Bởi vì bạn không có Sheet nào tên "& ten &" cả
Có lẽ bạn muốn nói: ten & "" ==> bài toán ép kiểu thành chuỗi.
 
Upvote 0
@huuthang_bd Em chưa ạ. Hihi. Tại không có máy để thử. Nhưng nghe chú @VetMini mini nói nó lỗi. Xin lỗi thớt vì chưa test. Cám ơn chú và anh chỉ lỗi ạ
 
Upvote 0
Chào các bạn, từ bài 3 tôi có thử nghiệm
Code ban đầu là
PHP:
Sub XinChao()
MsgBox "xin chao"
End Sub
Tôi sửa như sau
PHP:
Sub XinChao()
CStr(Sheets("HuongDan").Range("A1").Value)
End Sub
Trong đó tại ô A1 của sheet HuongDan tôi để : MsgBox "xin chao"
Nhưng code báo lỗi dòng: CStr(Sheets("HuongDan").Range("A1").Value) là "Identifier"
Cho hỏi nếu tôi muốn để dòng code tại ô A1 của sheet HuongDan tôi để : MsgBox "xin chao" thì code phải sửa như thế nào?
Xin cảm ơn các bạn!
 
Upvote 0
Chào các bạn, từ bài 3 tôi có thử nghiệm
Code ban đầu là
PHP:
Sub XinChao()
MsgBox "xin chao"
End Sub
Tôi sửa như sau
PHP:
Sub XinChao()
CStr(Sheets("HuongDan").Range("A1").Value)
End Sub
Trong đó tại ô A1 của sheet HuongDan tôi để : MsgBox "xin chao"
Nhưng code báo lỗi dòng: CStr(Sheets("HuongDan").Range("A1").Value) là "Identifier"
Cho hỏi nếu tôi muốn để dòng code tại ô A1 của sheet HuongDan tôi để : MsgBox "xin chao" thì code phải sửa như thế nào?
Xin cảm ơn các bạn!
Muốn thực thi câu lệnh từ một đoạn chuỗi không phải chuyện đơn giản vậy đâu.
1> Đầu tiên bạn vào cửa sổ VBA, chọn Tools\References và check mục "Microsoft Visual Basic for Application Extensibility 5.3"
2> Tiếp theo viết code thế này:
Mã:
Sub ExecuteCommand()
  Dim MyCode    As String
  Dim vbComp    As VBComponent
  Dim vbCodeMod As CodeModule

  MyCode = Sheets("HuongDan").Range("A1").Value
  Set vbComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
  vbComp.Name = "TempMod"
  Set vbCodeMod = ThisWorkbook.VBProject.VBComponents("TempMod").CodeModule
  vbCodeMod.InsertLines 3, _
     "Sub Main()" & vbLf & _
     MyCode & vbLf & _
     "End Sub"
  Application.Run "Main"
  ThisWorkbook.VBProject.VBComponents.Remove vbComp
End Sub
Đương nhiên file bạn có sheet tên là HuongDan, và tại cell A1 của sheet HuongDan đang có câu lệnh nào đó (chẳng hạn là câu MsgBox "Xin Chào"). Đồng thời mục "Trust access to the VBA... " trong Excel Options đã được check
 

File đính kèm

  • ExecuteCommand(From String).xlsm
    19 KB · Đọc: 12
Upvote 0
Muốn thực thi câu lệnh từ một đoạn chuỗi không phải chuyện đơn giản vậy đâu.
1> Đầu tiên bạn vào cửa sổ VBA, chọn Tools\References và check mục "Microsoft Visual Basic for Application Extensibility 5.3"
2> Tiếp theo viết code thế này:
Mã:
Sub ExecuteCommand()
  Dim MyCode    As String
  Dim vbComp    As VBComponent
  Dim vbCodeMod As CodeModule

  MyCode = Sheets("HuongDan").Range("A1").Value
  Set vbComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
  vbComp.Name = "TempMod"
  Set vbCodeMod = ThisWorkbook.VBProject.VBComponents("TempMod").CodeModule
  vbCodeMod.InsertLines 3, _
     "Sub Main()" & vbLf & _
     MyCode & vbLf & _
     "End Sub"
  Application.Run "Main"
  ThisWorkbook.VBProject.VBComponents.Remove vbComp
End Sub
Đương nhiên file bạn có sheet tên là HuongDan, và tại cell A1 của sheet HuongDan đang có câu lệnh nào đó (chẳng hạn là câu MsgBox "Xin Chào"). Đồng thời mục "Trust access to the VBA... " trong Excel Options đã được check
Cảm ơn anh nhiều!
 
Upvote 0
Web KT

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

Back
Top Bottom