Code Name

Liên hệ QC

Mr Okebab

Ngon Ngất Ngây
Thành viên đã mất
Tham gia
6/8/06
Bài viết
3,260
Được thích
3,787
Để biết được tên của Sheet nào đó trong VBA thì ta dùng :
Sheets("GPE").CodeName
Tuy nhiên để thay đổi tên của Sheet đó trong VBA thì ta phải làm cách nào ??
Cảm ơn nhiều.

Thân!
 
Hôm nay anh uống CF chưa vậy?

Đổi tên GPE thành MrOkBap:

Sheets("GPE").Name = "MrOkBap"

LM
 
Upvote 0
Để lựa chọn Sheet không phụ thuộc vào tên Sheet có thể dùng thứ tự của Sheets để lựa chọn. Ví dụ Sheets(1) ; Sheets(2) ... như vậy khi thay đổi tên Sheets thì không bị lỗi
Còn nếu để đổi tên Sheet trong VBA thì có thể dùng lệnh
Mã:
Sheets("GPE").Name ="Mr Okebab"
Sheets(1).Name ="Mr Okebab"
 
Upvote 0
Có lẽ cần phải thêm một form để nhập tên sheet mới rồi OK; nếu không code đó chỉ xài được một lần rồi bỏ.
 
Upvote 0
Mr Okebab đã viết:
Để biết được tên của Sheet nào đó trong VBA thì ta dùng :
Sheets("GPE").CodeName

Tuy nhiên để thay đổi tên của Sheet đó trong VBA thì ta phải làm cách nào ??
Cảm ơn nhiều.

Thân!

Baw

Bắp thử cái này xem

Application.VBE.ActiveVBProject.VBComponents(ActiveWorkbook.Sheets("GPE").CodeName).Name = "SB"

Thân
 
Upvote 0
SoiBien đã viết:
Baw

Bắp thử cái này xem

Application.VBE.ActiveVBProject.VBComponents(ActiveWorkbook.Sheets("GPE").CodeName).Name = "SB"

Thân
Bị lỗi bác ạ.

Nó báo : Subscript out of range ??

Thân!
 
Upvote 0
LearnMore đã viết:
Hôm nay anh uống CF chưa vậy?

Đổi tên GPE thành MrOkBap:

Sheets("GPE").Name = "MrOkBap"

LM
DAT2007 đã viết:
Để lựa chọn Sheet không phụ thuộc vào tên Sheet có thể dùng thứ tự của Sheets để lựa chọn. Ví dụ Sheets(1) ; Sheets(2) ... như vậy khi thay đổi tên Sheets thì không bị lỗi
Còn nếu để đổi tên Sheet trong VBA thì có thể dùng lệnh
Code:
Sheets("GPE").Name ="Mr Okebab"
Sheets(1).Name ="Mr Okebab"​
Cảm ơn nhiều, tuy nhiên ý mình là đổi tên Sheet hiển thị trong VBA và bằng VBA cơ.

VD : Trong Excel thì sheet đó tên là GPE, nhưng trong VBE sheet đó tên là Okebab chẳng hạn.
Vì vậy :

Sheets("GPE").Name = "GPE"
Sheets("GPE").CodeName = "Okebab"


Thân!
 
Upvote 0
Worksheet.CodeName (tên trong VBE,trong code) có thuộc tính là "Read-Only", vì vậy nó không thể gán giá trị trong code.
Worksheet.Name có thuộc tính cả ghi và đọc nên có thể gán (thực ra tên sheet do người dùng quản lý nên Excel cho phép thay đổi trong code).

Nói chung Name của đối tượng hay Class không thể thay đổi trong code mà chỉ có thể thay đổi bằng tay khi thiết kế. Như các Name của Commandbutton, ListBox, ComboBox,...là không thể thay đổi trong code.

Mình nghĩ có thể (không chắc lắm) có một cách là can thiệp trong VBAProject, cách này mình chưa thử bao giờ.
 
Upvote 0
TuanVNUNI đã viết:
Worksheet.CodeName (tên trong VBE,trong code) có thuộc tính là "Read-Only", vì vậy nó không thể gán giá trị trong code.
Worksheet.Name có thuộc tính cả ghi và đọc nên có thể gán (thực ra tên sheet do người dùng quản lý nên Excel cho phép thay đổi trong code).

Nói chung Name của đối tượng hay Class không thể thay đổi trong code mà chỉ có thể thay đổi bằng tay khi thiết kế. Như các Name của Commandbutton, ListBox, ComboBox,...là không thể thay đổi trong code.

Mình nghĩ có thể (không chắc lắm) có một cách là can thiệp trong VBAProject, cách này mình chưa thử bao giờ.

Em nghĩ là có cách đổi vì nó cho ta đổi = tay nghĩa là có thể đổi được.
Tuy nhiên đổi bằng cách nào thì . . . em không biết.+-+-+-++-+-+-+

Thân!
 
Upvote 0
Mr Okebab đã viết:
Em nghĩ là có cách đổi vì nó cho ta đổi = tay nghĩa là có thể đổi được.
Tuy nhiên đổi bằng cách nào thì . . . em không biết.+-+-+-++-+-+-+

Thân!

Không phải cứ động vào bằng tay được thì code cũng được đâu. Trong lập trình người ta phân biệt "Design time" và "Run time". Khi mình đặt tên biến tên module, tên class, tên thủ tục...đó là lúc "Design Time", cho phép sửa làm bằng tay. Khi chạy gọi là "Run time" thì những việc làm lúc "design time" không được. Bạn không thể thay đổi tên biến khi đang chạy, không thể thay tên hàm khi đang chạy, Sheet là một class là một đối tượng thì tên của nó cũng khó mà thay đổi được+-+-+-+ .
 
Upvote 0
SoiBien đã viết:
SAo mình làm được nhỉ, Bap thử fiel này xem, nó change codename của sheet GPE thành MrOkeBap.

Vẫn lỗi như thế. Hay do mình dùng chú 2007 ???
Chú 2003 tìm mãi chẳng thấy. Để mai test xem sao.

Ai có 2003 test giùm cái.
Cảm ơn cậu nhiều.

Thân!
 
Upvote 0
TuanVNUNI đã viết:
Không phải cứ động vào bằng tay được thì code cũng được đâu. Trong lập trình người ta phân biệt "Design time" và "Run time". Khi mình đặt tên biến tên module, tên class, tên thủ tục...đó là lúc "Design Time", cho phép sửa làm bằng tay. Khi chạy gọi là "Run time" thì những việc làm lúc "design time" không được. Bạn không thể thay đổi tên biến khi đang chạy, không thể thay tên hàm khi đang chạy, Sheet là một class là một đối tượng thì tên của nó cũng khó mà thay đổi được+-+-+-+ .

Bác có chú 2003 không, test hộ em cái của SoiBien giùm xem có chạy được không.
Của em 2007 báo lỗi.
Còn cái vụ kia thì là . . . em nghĩ. Nếu không phải thì . . . thôi vậy. (nhưng vẫn ấm ức)

Bác báo lên giùm em nhé.
Cảm ơn bác.

Thân!
 
Upvote 0
Mr Okebab đã viết:
Vẫn lỗi như thế. Hay do mình dùng chú 2007 ???
Chú 2003 tìm mãi chẳng thấy. Để mai test xem sao.

Ai có 2003 test giùm cái.
Cảm ơn cậu nhiều.

Thân!

Ok, chạy được rồi. Là do mình chưa khai báo trong Trust Center thôi.

Cảm ơn nhiều. Hay ra phết. Cái này thì tớ xin . . . chịu.

Thân!
 
Upvote 0
Nếu chúng ta xem kỹ lại đoạn code của SoiBien và ý kiến của Tuân, cũng như trong Help thì chúng ta giải thích thế nào?

LVD
 
Upvote 0
levanduyet đã viết:
Nếu chúng ta xem kỹ lại đoạn code của SoiBien và ý kiến của Tuân, cũng như trong Help thì chúng ta giải thích thế nào?

LVD

Bác giải thích giùm tụi em luôn đi, chứ em thì . . . có biết gì đâu.+-+-+-++-+-+-++-+-+-+

Thân!
 
Upvote 0
VBIDE programming

Mr Okebab đã viết:
Để biết được tên của Sheet nào đó trong VBA thì ta dùng :
Sheets("GPE").CodeName
Tuy nhiên để thay đổi tên của Sheet đó trong VBA thì ta phải làm cách nào ??
Cảm ơn nhiều.

Thân!


Anh Bắp dùng thử code sau nha, lưu ý:
1. Vào Tools | Macro | Security | Trusted Sources | chọn Trust access to Visual Basic Project
VBE00.jpg


2. Trong VBE vào Tools | Reference | chọn Microsoft Visual Basic for Applications Extensibility 5.3
VBE01.jpg


Xem thêm = google với từ khóa "VBIDE Programming" ==> đọc mệt xỉu

TP.
 

File đính kèm

Upvote 0
ttphong2007 đã viết:
Anh Bắp dùng thử code sau nha, lưu ý:
1. Vào Tools | Macro | Security | Trusted Sources | chọn Trust access to Visual Basic Project


2. Trong VBE vào Tools | Reference | chọn Microsoft Visual Basic for Applications Extensibility 5.3


Xem thêm = google với từ khóa "VBIDE Programming" ==> đọc mệt xỉu

TP.

Thật là hay đó, tuy nhiên Code của cậu sẽ thay luôn tên của Module. Mình thêm xíu nhé :

PHP:
Sub DoitentrongVBE()
    Dim i As Integer
    Dim vbCom As VBComponent
    i = 10
    For Each vbCom In ThisWorkbook.VBProject.VBComponents
        If vbCom.Type = vbext_ct_Document Then
            vbCom.Name = "MrOkeBap" & i
            i = i + 1
        End If
    Next vbCom
End Sub

Cảm ơn nhiều

Thân!
 
Upvote 0
Cho tôi ké thêm 1 chút:
Nếu lấy sheetname thì ta dùng công thức CELL("FILENAME")... Còn như muốn lấy Sheet Code Name thì dùng công thức gì nhỉ?
Ý tôi nói là công thức chứ ko phải dùng VBA
ANH TUẤN
 
Upvote 0
Web KT

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

Back
Top Bottom