khanhnth02
Thành viên thường trực
- Tham gia
- 5/8/07
- Bài viết
- 324
- Được thích
- 35
làm sao để khi ta gõ một số nào đó vào cột B , sau đó nó sẽ tự động kết hợp với số tháng để cho ra số thứ tự như hình duới đây. cảm ơn các anh chi đã xem qua
Ý bạn như thế này phải không
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Target.Column = 2 And Target.Offset(, -1).Value <> "" Then
Application.EnableEvents = False
Tmp = Target
Target.NumberFormat = "@"
Target.Value = Tmp & "." & Format(Month(Target.Offset(, -1).Value), "00")
Application.EnableEvents = True
End If
End Sub
Thêm 1 câu lệnh vào đầu code:như anh ptm0412 là đúng ý em rùi , nhưng sao khi ở cột B nếu ta không bấm gì hoăcj gõ Delete vào ô đó thì nó cũng hiện ra số tháng. làm sao để khi ta put số nào vào thì nó mới nhảy số . chân thành cảm ơn anh nha
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 2 Then Exit Sub
If Target.Column = 1 Then
If Target = "" Then
Target.Offset(, 1).ClearContents: Exit Sub
Else
Tmp = Target.Offset(, 1)
If Len(Tmp) = 0 Then Exit Sub
Target.Offset(, 1) = Left(Tmp, InStr(1, Tmp, ".") - 1): Exit Sub
End If
End If
If Target.Column = 2 And Target.Offset(, -1) <> "" And Target <> "" Then
Application.EnableEvents = False
Tmp = Target
Target.NumberFormat = "@"
Target.Value = Tmp & "." & Format(Month(Target.Offset(, -1)), "00")
Application.EnableEvents = True
End If
End Sub
Bạn gõ trước số ở cột B, mà ô A kế bên trống, thì nó còn nguyên số. Gõ ngày sau thì lỗi là phải rồi.gõ một số nào đó vào cột B , sau đó nó sẽ tự động kết hợp với số tháng để cho ra số thứ tự như hình
ta muốn sửa lại hoặc xóa ngày tháng ở cột A thì làm sao để cột B thay đổi theo
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 2 Then Exit Sub
If Target.Column = 1 Then
If Target = "" Then
Target.Offset(, 1).ClearContents: Exit Sub
Else
Tmp = Target.Offset(, 1)
If Len(Tmp) = 0 Then Exit Sub
Target.Offset(, 1) = Left(Tmp, InStr(1, Tmp, ".") - 1): Exit Sub
End If
End If
If Target.Column = 2 And Target <> "" Then
If Target.Offset(, -1) = "" Then MsgBox "Go ngay truoc ong oi!": Target.Clear: Exit Sub
Application.EnableEvents = False
Tmp = Target
Target.NumberFormat = "@"
Target.Value = Tmp & "." & Format(Month(Target.Offset(, -1)), "00")
Application.EnableEvents = True
End If
End Sub
Thử code này xem:cảm ơn anh nhé. nhưng sao nó vẫn còn bị lỗi. nếu như tôi gõ số trước rồi sau đó mới gõ ngày tháng thì nó báo lỗi. cái này là bị gì vậy anh?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, Rng As Range, iMth As Long, iVal
On Error GoTo ExitSub
If Not Intersect(Range("A1:B1000"), Target) Is Nothing Then
Set Rng = Intersect(Range("A1:B1000"), Target.EntireRow)
Application.EnableEvents = False
For i = 1 To Rng.Rows.Count
If Rng(i, 1).Value <> "" And Rng(i, 2).Value <> "" Then
iMth = Month(Rng(i, 1).Value)
iVal = Split(Rng(i, 2).Value, ".")(0)
If iMth > 0 Then Rng(i, 2).Value = "'" & iVal & "." & Format(iMth, "00")
End If
Next
ExitSub:
Application.EnableEvents = True
End If
End Sub