Code lấy tên sheet hiện hành là:Chào các bạn.
Xin các bạn chỉ giúp code lấy tên sheet hiện hành ở trong VBA
(TÊN LÀ TÊN TRONG VBA, VÍ DỤ BÊN NGOÀI EXCELL LÀ SHEET "KHỐI LƯỢNG" NHƯNG NAME BÊN TRONG VBA LA "S001"). XIN CẢM ƠN.
Sub thu() Sheets("KL").Name = ActiveSheet.CodeName End Sub
Cảm ơn ndu !
Với lại mấy bạn cho hỏi thêm một vấn đề nữa
VD: tên sheet là "KL", Sheet code name "S001"
Thay vì dùng câu lệnh:
Sheets("KL").Activate
Thì phải dùng câu lệnh như thế nào để thay tên sheet bằng tên Sheet code name
Rất mong được sự giúp đỡ của các bạn
S001.Active
Không được rồi bạn ơi.Thế này bạn ạ :
Thân!PHP:S001.Active
Workbooks("yeudoi").Sheets("doiyeu").Active
Thế này bạn ạ :
Thân!PHP:S001.Active
Các đại ca cứ hay sơ ý: Đáng lý là... .Activate thì lại ghi là .ActiveBạn đưa tên file vào
Workbooks("yeudoi").Sheets("doiyeu").Active
Thì bạn sửa lại chổ SheetName thành SheetCodeName... Có sao đâu!Mình chưa chạy thử nhưng nghĩ đaọn code này không được.
Chọn như vậy hình như la chọn theo tên sheet (name) chứ không phải theo codename
Là đang chọn theo sheet name, bạn sửa thành:Workbooks("yeudoi").Sheets("doiyeu").Activate
Với S001 là Sheet Code name trong WorkBook yeudoiWorkbooks("yeudoi").S001.Activate
Hic , không biết bạn có chạy thử đoạn code nào giống như vậy chưa.Thì bạn sửa lại chổ SheetName thành SheetCodeName... Có sao đâu!
Ví dụ:
Là đang chọn theo sheet name, bạn sửa thành:
Với S001 là Sheet Code name trong WorkBook yeudoi
Không được rồi bạn ơi.
Code như thế này chỉ chạy được trong trường hợp file đó có : code và sheet có codename trong cùng 1 file.
Có trường hợp bắt buộc do yêu cầu sử dụng:code nằm trong 1 file va sheet có codename nằm ở 1 file khác thì làm thế nào.
Mong các bạn chỉ giúp với.
Sub Test()
S001.Activate ''Activate chứ không phải là Active
End Sub
Có lẽ bạn chưa hiểu hết ý mình ( có thể bạn chưa đọc từ đầu)Tôi dùng cách này, giống với Anh OKBắp, chép vào Module chạy vô tư:
PHP:Sub Test() S001.Activate ''Activate chứ không phải là Active End Sub
Sub Test() Dim sh As Worksheet Workbooks("Book1.xls").Activate For Each sh In ThisWorkbook.Worksheets If sh.CodeName = "S001" Then sh.Select End If Next End Sub
Cần gì phải For nhỉ? Cứ S001.Select hoặc S001.Activate là được rồi...Vậy bạn dùng code sau nha!
PHP:Sub Test() Dim sh As Worksheet Workbooks("Book1.xls").Activate For Each sh In ThisWorkbook.Worksheets If sh.CodeName = "S001" Then sh.Select End If Next End Sub
Minh đã kiểm tra theo ý của bạn, bạn dùng code này sẽ Acti Sheet 1 trong Book1.xls, Code lưu ở bất cứ file nào cũng được.Có lẽ bạn chưa hiểu hết ý mình ( có thể bạn chưa đọc từ đầu)
Mình viết code ở 1 file (file này không có sheet mình cần thao tác chỉ chứa code)
Còn file chứa sheet codename ở 1 file khác thì dùng code trên không thực hiện được
Nếu có thể bạn gởi 2 file tương tự như vậy được không.
Sub Test_pmh()
Workbooks("Book1.xls").Sheets("Sheet1").Activate
End Sub
''-- Chuyen qua lai giua 2 Sheet
Sub Sh1_Shbandau1()
Dim NameSh As String
NameSh = ActiveSheet.Name
MsgBox "Ten Sheet hien hanh trong Excel la: " & NameSh
Sheet1.Activate
MsgBox "Da chuyen qua Sheet dau tien"
Sheets(NameSh).Activate
MsgBox "Da chuyen ve Sheet hien hanh ban dau la: " & NameSh
End Sub
''-- Chuyen qua lai giua 2 Sheet??? Khong duoc??? GPE???
Sub Sh1_Shbandau2()
Dim NameShVB As String
NameShVB = ActiveSheet.CodeName
MsgBox "Ten Sheet hien hanh trong VB la: " & NameShVB
Sheet1.Activate
MsgBox "Da chuyen qua Sheet dau tien"
Sheets(NameShVB).Activate ''-- Dong Code nay bi Error mong cac ban gop y???
MsgBox "Da chuyen ve Sheet hien hanh ban dau la: " & NameShVB
End Sub
Đoạn code này tôi không thấy có vấn đề gì cả, đã chạy thử, không báo lỗi gì cả! Bạn có thể nói rõ thông báo lỗi bạn gặp đó là gì không?PHP:''-- Chuyen qua lai giua 2 Sheet??? Khong duoc??? GPE??? Sub Sh1_Shbandau2() Dim NameShVB As String NameShVB = ActiveSheet.CodeName MsgBox "Ten Sheet hien hanh trong VB la: " & NameShVB Sheet1.Activate MsgBox "Da chuyen qua Sheet dau tien" Sheets(NameShVB).Activate ''-- Dong Code nay bi Error mong cac ban gop y??? MsgBox "Da chuyen ve Sheet hien hanh ban dau la: " & NameShVB End Sub
Thử sửa lại thành:Mình có 2 Code sử dụng NameSheet Và NameVBSheet cùng thực hiện công việc tương tự nhau, Nhưng tại sao cái 1 Run OK, còn cái 2 thì Run Error, Mong bác bạn sửa lại code 2 giúp.
PHP:''-- Chuyen qua lai giua 2 Sheet Sub Sh1_Shbandau1() Dim NameSh As String NameSh = ActiveSheet.Name MsgBox "Ten Sheet hien hanh trong Excel la: " & NameSh Sheet1.Activate MsgBox "Da chuyen qua Sheet dau tien" Sheets(NameSh).Activate MsgBox "Da chuyen ve Sheet hien hanh ban dau la: " & NameSh End Sub
PHP:''-- Chuyen qua lai giua 2 Sheet??? Khong duoc??? GPE??? Sub Sh1_Shbandau2() Dim NameShVB As String NameShVB = ActiveSheet.CodeName MsgBox "Ten Sheet hien hanh trong VB la: " & NameShVB Sheet1.Activate MsgBox "Da chuyen qua Sheet dau tien" Sheets(NameShVB).Activate ''-- Dong Code nay bi Error mong cac ban gop y??? MsgBox "Da chuyen ve Sheet hien hanh ban dau la: " & NameShVB End Sub
Sub Sh1_Shbandau2()
Dim NameShVB As Worksheet
Set NameShVB = ActiveSheet
MsgBox "Ten Sheet hien hanh trong VB la: " & NameShVB.CodeName
Sheet1.Activate
MsgBox "Da chuyen qua Sheet dau tien"
NameShVB.Activate
MsgBox "Da chuyen ve Sheet hien hanh ban dau la: " & NameShVB.CodeName
End Sub
Đoạn code này tôi không thấy có vấn đề gì cả, đã chạy thử, không báo lỗi gì cả! Bạn có thể nói rõ thông báo lỗi bạn gặp đó là gì không?
Vậy thì sửa như tôi đã nói ở trên là OK ngayLỗi xẫy ra khi bạn Rename Tên Sheet (không còn là tên mặcđịnh nữa)
Và bạn chạy Code ở nhưng Sheet đã sửa tên đó.
Minh hoa file goi kem
Sub Sh1_Shbandau2()
With ActiveSheet
MsgBox "Ten Sheet hien hanh trong VB la: " & .CodeName
Sheets(1).Activate
MsgBox "Da chuyen qua Sheet dau tien"
.Activate
MsgBox "Da chuyen ve Sheet hien hanh ban dau la: " & .CodeName
End With
End Sub
Sub Test()
Sheets("ndu2").Activate
End Sub
Sub Test()
Sheets("Sheet2").Activate
End Sub
Sub Test()
Sheets(Sheet2).Activate
End Sub
2 Đoạn Code của bạn trong 2 bài Run rất OK. Thanks bạn nhiều.Vậy thì sửa như tôi đã nói ở trên là OK ngay
Giả sử mình không đùng Sheet.Name va Sheet.CodeName mà mình sử dụng thứ thự của Sheet có được hông?
Mình không biết lệnh nào để lấy số thứ tự của ActiSheet???
Activesheet.Index
Như Ca_dafi nói, đó là .Index ---> Lấy thứ tự sheet2 Đoạn Code của bạn trong 2 bài Run rất OK. Thanks bạn nhiều.
Giả sử mình không đùng Sheet.Name va Sheet.CodeName mà mình sử dụng thứ thự của Sheet có được hông?
Mình không biết lệnh nào để lấy số thứ tự của ActiSheet???
Bạn hãy thay số thứ tự của Sheet vào 1 trong các Code chuyển sheet giúp mình với.
Minh đã kiểm tra theo ý của bạn, bạn dùng code này sẽ Acti Sheet 1 trong Book1.xls, Code lưu ở bất cứ file nào cũng được.
PHP:Sub Test_pmh() Workbooks("Book1.xls").Sheets("Sheet1").Activate End Sub
Nhân tiện đố mọi người biết làm cách nào xác định được 1 sheet là Worksheet hay Macro Sheet hay.... vân vân ---> Đại khái xác định kiểu của 1 sheet nào đómình biết tại sao rồi, thanks b! mình tạo sheet macro4 nên nó không có code name
Lâu lâu lôi bài cũ lên trả lời chơi.Nhân tiện đố mọi người biết làm cách nào xác định được 1 sheet là Worksheet hay Macro Sheet hay.... vân vân ---> Đại khái xác định kiểu của 1 sheet nào đó
Ẹc... Ẹc...
Sub Test()
Dim GiaTriFile1 As Long
GiaTriFile1 = Sheet4.Range("A1").Value
With Workbooks("File2")
[COLOR=#ff0000] .Sheets("HoangTrongNghia_1").Range("B1") = GiaTriFile1[/COLOR]
[COLOR=#ff0000] .Sheets("HoangTrongNghia_2").Range("C5") = GiaTriFile1[/COLOR]
End With
End Sub
Con đang đọc cuốn sách" Lập trình VBA cho người mới bắt đầu" của tác giả Phan Tự Hướng và sau khi đọc qua bài viết này bây giờ con mới để ý có chỗ thì tác giả dùng Active có chỗ thì tác giả lại dùng Activate nhưng không biết phân biệt 2 cái này khác nhau như thế nào. Con đã thử tìm trên diễn đàn nhưng không tìm thấy đề tài nào nói về sự khác nhau giữa cái này. Mong chú Ndu giải thích giùm con với ạ, khi nào thì ta dùng Active và khi nào thì ta lại dùng Activate.Các đại ca cứ hay sơ ý: Đáng lý là... .Activate thì lại ghi là .Active
Em cháu nhắm mắt làm theo trật lất hết
Ẹc... Ẹc...
Con đang đọc cuốn sách" Lập trình VBA cho người mới bắt đầu" của tác giả Phan Tự Hướng và sau khi đọc qua bài viết này bây giờ con mới để ý có chỗ thì tác giả dùng Active có chỗ thì tác giả lại dùng Activate nhưng không biết phân biệt 2 cái này khác nhau như thế nào. Con đã thử tìm trên diễn đàn nhưng không tìm thấy đề tài nào nói về sự khác nhau giữa cái này. Mong chú Ndu giải thích giùm con với ạ, khi nào thì ta dùng Active và khi nào thì ta lại dùng Activate.
dùng activate khi bạn muốn chọn sheet hoặc range nào đó
dùng active khi bạn muốn nhận được thông báo "Object doesnt support this property" hoặc "method or data member not found"
Câu trên thì em có thể hiểu được chứ câu dưới thì em chịu thua, anh có thể giải thích dễ hiểu hơn một chút được không.
Em mới bập bẹ với VBA được mấy bữa mà anh đã phang những từ ngữ chuyên sâu : "Object doesnt support this property" hoặc "method or data member not found" thế thì quả thực hơi khó hiểu.
Activate là phương thức tương tự như động từ, ví dụ lệnh Sheet1.Activate sẽ làm sheet1 thành sheet hiện hành (ActiveSheet).Câu trên thì em có thể hiểu được chứ câu dưới thì em chịu thua, anh có thể giải thích dễ hiểu hơn một chút được không.
Em mới bập bẹ với VBA được mấy bữa mà anh đã phang những từ ngữ chuyên sâu : "Object doesnt support this property" hoặc "method or data member not found" thế thì quả thực hơi khó hiểu.
... có chỗ thì tác giả dùng Active có chỗ thì tác giả lại dùng Activate nhưng không biết phân biệt 2 cái này khác nhau như thế nào...
cảm ơn bạn, đúng ý mình đang tìm hiểu. đổi tên kiểu gì cũng chạyBạn dùng code sau:
PHP:Activesheet.Index
Mình tầm thường quá nên không hiểu ý lớn vĩ đạiGiờ thay code bằng (Worksheets(Activesheet.Index).Activate) là ok,
Worksheets(Activesheet.Index).Activate
Chưa kể còn bị sai nếu có sheet không phải là worksheet đứng trước ActivesheetMình tầm thường quá nên không hiểu ý lớn vĩ đại
Mã:Worksheets(Activesheet.Index).Activate
Tức là đưa Activesheet vào trạng thái hoạt động? Nếu sheet đang đeo huy hiệu "Activesheet" thì sao lại đưa nó vào trạng thái hoạt động? Nếu sheet đang Active - đang trong trạng thái hoạt động thì tại sao lại phải đưa nó vào trạng thái hoạt động? Để cho chắc chắn 200% là sheet ấy sẽ ở trong trạng thái hoạt động?