- Tham gia
- 18/3/08
- Bài viết
- 8,309
- Được thích
- 15,867
- Giới tính
- Nam
- Nghề nghiệp
- Làm ruộng.
Trời... có thật là bạn hỏi câu này không nhỉ? (vì mình không nghĩ là bạn làm không được)Các anh chị cho em hỏi là có cách nào tạo tên 1 sheet dựa vào 1 cell trong bảng, điều kiện là cell đó phải là điều kiện để lookup cột kế bên của bảng dữ liệu, từ đó lấy kết quả đó để đặt tên cho sheet.
Em xin cám ơn trước.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$G$2" Then
With Range("A4").CurrentRegion
ActiveSheet.Name = .Find(Target)(, 2)
End With
End If
End Sub
Nghĩa là sao? Tôi chưa hiểu lắm! Bạn giải thích rõ thêm chút điLại một lần nữa cám ơn thầy.
Ý của em là mình dùng bảng Data đó ứng dụng cho cả Workbook, xin lỗi vì em không diễn đạt kỹ.
Em xin cám ơn trước.
Các anh chị cho em hỏi là có cách nào tạo tên 1 sheet dựa vào 1 cell trong bảng, điều kiện là cell đó phải là điều kiện để lookup cột kế bên của bảng dữ liệu, từ đó lấy kết quả đó để đặt tên cho sheet.
Em xin cám ơn trước.
Sub TaoSheet()
Dim TenSh As String
TenSh = Application.WorksheetFunction.VLookup(Sheet1.Range("G2"), Sheet1.Range("DaTa"), 2, 0)
Sheets.Add.Name = TenSh
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If target.Address = "$G$2" Then
a = Target
RenameSheet a
End If
End Sub
Sub RenameSheet(a)
NewName = Application.VLookup(a, Sheet1.Range("ShNamelist"), 2, 0)
For Each Sht In ThisWorkbook.Sheets
If Sht.Name = NewName Then NewName = NewName & "1"
Next
ActiveSheet.Name = NewName
End Sub
Thì cũng thế thôi, lần trước là Worksheet_Change... lần này dùng Workbook_SheetChangeTo MinhNguyet: Rất cám ơn bạn nhưng ý mình không phải như vậy.
To thầy ndu96081631: Ý em là em dùng bảng Data đó cho toàn bộ Book. Ở trên là chỉ sử dụng cho 1 sheet mà thôi. (Em xin lỗi vì không biết cách diễn đạt)
Em xin cám ơn trước.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If Target.Address = "$G$2" And Sh.Name <> "data" Then
With Sheets("data").Range("A4").CurrentRegion
Sh.Name = .Find(Target, LookAt:=xlWhole).Offset(, 1).Value
End With
End If
End Sub
anh dùng TextBox được vẽ bằng Shape, hơi khó viết code ---> Sao anh không chọn thẳng vào cell tại cột D luôn?Chào các bạn ! Tôi muốn Khi Texbox nào đó được chọn mà có nội dung giống như trong cột D thì đổi tên Sheet theo tên tại cột E Tôi đã tham khảo các bài trên nhưng vẫn không làm được. Nhờ các bạn sửa giúp code trong file đính kèm
Em làm được rồi... Anh thử code này xem nha:Chả là tôi đang trả lời bài này
http://www.giaiphapexcel.com/forum/showpost.php?p=188481&postcount=3
và muốn cải tiến một chút để code tổng quát hơn không phải viết thêm vòng lặp khi thêm sheet
Sub TenSheet()
Dim Shp As Shape
With ActiveSheet
For Each Shp In .Shapes
If Shp.Name = .Shapes(Application.Caller).Name Then
.Name = Range("D3:D7").Find(Shp.TextFrame.Characters.Text, , , xlWhole)(, 2).Value
End If
Next
End With
End Sub
Sub TenSheet()
Dim Shp As Shape
With ActiveSheet
Set Shp = .Shapes(Application.Caller)
.Name = Range("D3:D7").Find(Shp.TextFrame.Characters.Text, , , xlWhole)(, 2).Value
End With
End Sub
Ôi.... Làm rồi lại thấy anh thêm.. câu hỏiBạn giúp tiếp là mỗi texbox chỉ ứng với một sheet thôi có nghĩa là nếu chọn texbox1 thì đổi tên Sheet1; nếu chọn texbox2 thì đổi tên Sheet2...
Sub TenSheet()
Dim Shp As String, i As Long
On Error Resume Next
With ActiveSheet
Shp = .Shapes(Application.Caller).TextFrame.Characters.Text
i = WorksheetFunction.Match(Shp, Range("D3:D7"), 0)
Sheets(i).Name = Range("D3:D7").Find(Shp, , , xlWhole)(, 2).Value
End With
End Sub