Vầy đi:Mình muốn tạo Name động bằng VBA, khi cấn thì khởi tạo, không cần thì xóa name (Yêu cầu theo File đính kèm).
Mong các bạn hướng dẫn giúp mình với
Sub TaoName()
On Error Resume Next
With ThisWorkbook
.Names("Khach").Delete
.Names.Add "Khach", "=OFFSET(Sheet1!$A$2,,,COUNTA(Sheet1!$A$2:$A$1000),1)"
End With
End Sub
Mình thì làm cách khác.Mình muốn tạo Name động bằng VBA, khi cấn thì khởi tạo, không cần thì xóa name (Yêu cầu theo File đính kèm).
Mong các bạn hướng dẫn giúp mình với
Dim RngName As String, RngRef As String
Dim i As Long
Sub TaoName()
RngName = [F2].Value: RngRef = [G2].Value
ActiveWorkbook.Names.Add Name:=RngName, RefersTo:=RngRef
End Sub
Sub XoaName()
RngName = [F2].Value
For i = 1 To ActiveWorkbook.Names.Count
If ActiveWorkbook.Names(i, 1, 1).NameLocal = RngName Then
ActiveWorkbook.Names(i, 1, 1).Delete
End If
Next i
End Sub
Dùng thế thì không thay thay vì ta đếm cột A => LastRow => Name.=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A$2:$A$100),1)


Sub TaoName()
Dim rng As Range
Set rng = Range(Sheet1.[A2], Sheet1.[A65536].End(xlUp))
If rng.Address = "$A$1:$A$2" Then
Sheet1.[A2].Name = "MaKH"
Sheet1.[B2].Name = "TenKH"
Else
rng.Name = "MaKH"
rng.Offset(, 1).Name = "TenKH"
End If
End Sub
Xoá Name còn dễ hơn:2. Gán Name cho vùng bắt đầu từ A1 đến hết dòng cuối và 3 cột:
PHP:EndR = [A65000].End(xlUp).Row Range("A1").Resize(EndR, 3).Name = "Data1"
ThisWorkbook.Names("Data1").Delete



