Tạo Mã hàng theo tên hàng bằng code (2 người xem)

Người dùng đang xem chủ đề này

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,538
Được thích
4,135
Giới tính
Nam
Mình đang tập tành code mà nghĩ mãi không ra cách viết tạo mã hàng theo tên hàng bằng code...+-+-+-++-+-+-++-+-+-+
vì vậy úp lên nhờ các bạn viết dùm...yều cầu ở trong file
xin cảm ơn nhiều nhiều
 

File đính kèm

Mình đang tập tành code mà nghĩ mãi không ra cách viết tạo mã hàng theo tên hàng bằng code...+-+-+-++-+-+-++-+-+-+
vì vậy úp lên nhờ các bạn viết dùm...yều cầu ở trong file
xin cảm ơn nhiều nhiều

Thử hàm chuối này xem sao
Mã:
Public Function Chuoi(DL) As String
Dim Tam
Tam = Split(DL & "      ", " ")
Chuoi = Left(Tam(0), 1) & Left(Tam(1), 1) & Left(Tam(2), 1)
End Function

Cú pháp =chuoi( 1 ô nào đó )
 
Upvote 0
Thử hàm chuối này xem sao
Mã:
Public Function Chuoi(DL) As String
Dim Tam
Tam = Split(DL & "      ", " ")
Chuoi = Left(Tam(0), 1) & Left(Tam(1), 1) & Left(Tam(2), 1)
End Function

Cú pháp =chuoi( 1 ô nào đó )
Ok rồi đó bạn nhưng mình muốn tạo thành một sub hay cho nó chạy với Worksheet_Change
 
Upvote 0
Ok rồi đó bạn nhưng mình muốn tạo thành một sub hay cho nó chạy với Worksheet_Change

Đoạn code trong sheet1, thêm cái này xem sao
Mã:
With Range([D1], [D200].End(3))
      .Offset(4, -3).Value = "=IF(RC[3]="""","""",MAX(R3C:R[-1]C)+1)"
      .Offset(4, -3).Value = .Offset(4, -3).Value
      .Offset(4, -1) = "=chuoi(RC[1])"         <-----Thêm dòng này
End With
 
Upvote 0
Đoạn code trong sheet1, thêm cái này xem sao
Mã:
With Range([D1], [D200].End(3))
      .Offset(4, -3).Value = "=IF(RC[3]="""","""",MAX(R3C:R[-1]C)+1)"
      .Offset(4, -3).Value = .Offset(4, -3).Value
      .Offset(4, -1) = "=chuoi(RC[1])"         <-----Thêm dòng này
End With
ok cảm ơn bạn mình thêm như sau. nhưng mã hàng nó ra chữ thường hết ...có cách nào mình gõ chữ in hay thường thì mã vẫn ra chữ in
Mã:
        .Offset(4, -1) = "=chuoi(RC[1])"        '' <--Them dong nay tao ma khach hang
        .Offset(4, -1).Value = .Offset(4, -1).Value
 
Lần chỉnh sửa cuối:
Upvote 0
Thử hàm chuối này xem sao
Mã:
Public Function Chuoi(DL) As String
Dim Tam
Tam = Split(DL & "      ", " ")
Chuoi = Left(Tam(0), 1) & Left(Tam(1), 1) & Left(Tam(2), 1)
End Function

Cú pháp =chuoi( 1 ô nào đó )

code trên luôn luôn trả về chuỗi dài 3 ký tự, bất kỳ chuỗi mẫu có trên hay dưới 3 từ.

hàm lấy ký tự đầu từ như thế này:

Mã:
Function KTDT(byVal s as string) as String
dim c as variant
For Each c in Split(s, " ")
KTDT = KTDT & Left(c, 1)
Next c
End Function

nếu muốn xác định số ký tự thì thêm dòng sau:

KTDT = Left(KTDT & Space(sokytu), sokytu)

@chủ thớt:
hàm lấy ký tự đầu từ là căn bản. Muốn sub hay sự kiện gì đó thì cứ việc viết sub rồi cho nó gọi hàm.
 
Upvote 0
ok cảm ơn bạn mình thêm như sau. nhưng mã hàng nó ra chữ thường hết ...có cách nào mình gõ chữ in hay thường thì mã vẫn ra chữ in
Mã:
        .Offset(4, -1) = "=chuoi(RC[1])"        '' <--Them dong nay tao ma khach hang
        .Offset(4, -1).Value = .Offset(4, -1).Value

Trong VBA có hàm chuyển thành chữ HOA đó bạn.
UCase(string)
 
Upvote 0
Viết chơi kiểu "tà đạo" cái:
1> Code trong Module:
Mã:
Function TenTat(ByVal Text) As String
  On Error Resume Next
  Dim tmp As String
  tmp = "{""" & Replace(WorksheetFunction.Trim(Text), " ", """;""") & """}"
  tmp = "Transpose(LEFT(" & tmp & ",1))"
  TenTat = Join(Evaluate(tmp), "")
End Function
2> Code sự kiện Change:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim cel As Range, rng As Range, ret As String
  On Error Resume Next
  If Not Intersect(Range("D5:D200"), Target) Is Nothing Then
    Set rng = Intersect(Range("D5:D200"), Target)
    For Each cel In rng
      ret = Left(TenTat(cel.Value), 3)
      cel.Offset(, -1).Value = UCase(ret)
    Next
  End If
End Sub
Chạy được hay không là.. hên xui nha! --=0
 
Upvote 0
Chạy tốt Anh Ndu
cảm ơn Anh nhiều
 
Upvote 0

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

Back
Top Bottom