Chào cả nhà !!!
Em có File này nhờ mọi người giúp em với!
Yêu cầu:
- Bên Sheet "Xuất Kho" khi nhập dữ liệu vào cột F thì tự động tìm kiếm ra những ký tự có trong List tại cột G trong sheet "Bang Ma Hang Hoa"
- Ví Dụ: Nhập bánh thì trong list xuất hiện những chữ ô có chữ bánh, Hoặc nhập 360 thì xuất hiện những ô có chứa 360, Hoặc nhập 288 thì xuất hiện những ô có chứa 288 ...
Em xin cám ơn cả nhà!!!
anh thông cảm e từ trước đến giờ mới chỉ tiếp xúc với công thức, thậm chí công thức còn chưa rành, ở sheet thẻ kho thì anh làm giúp e ok rồi, e vào view trong sheet BCNCC và copy code trong sheet thẻ kho sang sau khi lưu lại thì file excel báo lỗi, anh làm ơn hướng dẫn e làm sheet BCNCC giống với thẻ kho được không, e cám ơn anh rất nhiều
anh thông cảm e từ trước đến giờ mới chỉ tiếp xúc với công thức, thậm chí công thức còn chưa rành, ở sheet thẻ kho thì anh làm giúp e ok rồi, e vào view trong sheet BCNCC và copy code trong sheet thẻ kho sang sau khi lưu lại thì file excel báo lỗi, anh làm ơn hướng dẫn e làm sheet BCNCC giống với thẻ kho được không, e cám ơn anh rất nhiều
anh ơi ở sheet báo cáo nhà cung cấp mã lọc là mã khách hàng mà, a xem rồi chỉnh lại giúp e với, hiện tại anh vẫn đang để là mã vật tư chứ không phải mã khách
anh ơi ở sheet báo cáo nhà cung cấp mã lọc là mã khách hàng mà, a xem rồi chỉnh lại giúp e với, hiện tại anh vẫn đang để là mã vật tư chứ không phải mã khách
e cũng muốn biết tí mà đọc mãi không được cái gì vào đầu cả, tìm trên mạng nhưng toàn tài liệu nói khó hiểu mà không đúng với mục đích sử dụng của e. anh có tài liệu nào dễ hiểu về VBA thì làm ơn cho e xin được không, em cám ơn
1) Thay vì dùng List validation, cái này nó chỉ hiển thị đúng 1 cột, mất công phải viết nhiều code, thì tôi lại dùng ComboBox, nó vừa hiển thị được nhiều cột vừa tạo được các sự kiện để tìm kiếm theo key mà bạn gõ vào nó.
2) Tôi đã bỏ cột Chọn mã hàng vì nó không cần thiết
3) Tôi cũng Trim(Mã hàng) để chúng không có khoảng trắng đằng sau ở cột Mã hàng (cột B của sheet Bang Ma Hang Hoa).
4) Bạn tự chỉnh sửa lại công thức tại sheet In Toa
5) Tại cột Mã hàng (cột F, Xuat Kho) tôi có đặt 1 checkbox, nếu nó được check thì sẽ tìm theo Tên Hàng, còn không thì nó tìm theo Mã Hàng.
6) Nói chung, có gì thắc mắc thì bạn hỏi tiếp.
Thủ tục tạo mảng dữ liệu trong Standard Module:
Mã:
Public pubArrList
Public pubUBound As Long
Sub ArrCreate()
Dim HangCuoi As Long
Dim ShBangMa As Worksheet
Set ShBangMa = Sheets("Bang Ma Hang Hoa")
HangCuoi = ShBangMa.Range("B" & Rows.Count).End(xlUp).Row
pubArrList = ShBangMa.Range("B2:D" & HangCuoi)
pubUBound = UBound(pubArrList)
End Sub
Thủ tục sự kiện trong Sheet Module:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
If Selection.Count = 1 And Target.Row > 2 And Target.Column = 6 Then
If Not IsArray(pubArrList) Then
Call ArrCreate
.List = pubArrList
End If
.Visible = False
.Text = ""
If .ListCount < pubUBound Then
.List = pubArrList
End If
.Top = Target.Top
.Left = Target.Left
.Height = Target.Height
.Width = Target.Width
.Visible = True
.Activate
Else
If .Visible = True Then
.Visible = False
End If
End If
End With
End Sub
Private Sub ComboBox1_Change()
With ComboBox1
If .MatchFound Then
ActiveCell.Value = .Value
ActiveCell.Offset(, 1) = .List(, 1)
ActiveCell.Offset(, 2) = .List(, 2)
End If
End With
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
ActiveCell.Offset(1).Select
End If
End Sub
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Not IsArray(pubArrList) Then Exit Sub
Select Case KeyCode
Case 9, 13, 37 To 40
Case Else
If ComboBox1 > "" Then ComboBox1.DropDown
Dim StrItem As String
Dim n As Long, r As Long
Dim c As Byte, col As Byte
Dim GetRows(), ArrFilter()
col = IIf(CheckBox1, 2, 1)
StrItem = "*" & UCase(ComboBox1) & "*"
For r = 1 To pubUBound
If UCase(pubArrList(r, col)) Like StrItem Then
n = n + 1
ReDim Preserve GetRows(1 To n)
GetRows(n) = r
End If
Next
If n > 0 Then
ReDim ArrFilter(1 To n, 1 To 3)
For c = 1 To 3
For r = 1 To n
ArrFilter(r, c) = pubArrList(GetRows(r), c)
Next
Next
ComboBox1.List = ArrFilter
Else
ComboBox1.List = Array()
End If
End Select
End Sub
Code này hình như có vấn đề rồi anh ơi. Nghĩa là nó không update được tên hàng, đơn giá, đơn vị tính. Anh thử vào sheet danh mục hàng hóa anh gõ 1 tên hàng khác đi, rồi anh quay lại nhập thữ xem. chỉ khi nào tắt file đi mở lại nó mới update
các anh cho e hỏi là khi e đang sử dụng file này trên excell 2010 thì mở ngon, mang sang excell 2007 thì lại không mở được, xin hỏi lý do tại sao ạView attachment 134363
1) Thay vì dùng List validation, cái này nó chỉ hiển thị đúng 1 cột, mất công phải viết nhiều code, thì tôi lại dùng ComboBox, nó vừa hiển thị được nhiều cột vừa tạo được các sự kiện để tìm kiếm theo key mà bạn gõ vào nó.
2) Tôi đã bỏ cột Chọn mã hàng vì nó không cần thiết
3) Tôi cũng Trim(Mã hàng) để chúng không có khoảng trắng đằng sau ở cột Mã hàng (cột B của sheet Bang Ma Hang Hoa).
4) Bạn tự chỉnh sửa lại công thức tại sheet In Toa
5) Tại cột Mã hàng (cột F, Xuat Kho) tôi có đặt 1 checkbox, nếu nó được check thì sẽ tìm theo Tên Hàng, còn không thì nó tìm theo Mã Hàng.
6) Nói chung, có gì thắc mắc thì bạn hỏi tiếp.
Thủ tục tạo mảng dữ liệu trong Standard Module:
Mã:
Public pubArrList
Public pubUBound As Long
Sub ArrCreate()
Dim HangCuoi As Long
Dim ShBangMa As Worksheet
Set ShBangMa = Sheets("Bang Ma Hang Hoa")
HangCuoi = ShBangMa.Range("B" & Rows.Count).End(xlUp).Row
pubArrList = ShBangMa.Range("B2:D" & HangCuoi)
pubUBound = UBound(pubArrList)
End Sub
Thủ tục sự kiện trong Sheet Module:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
If Selection.Count = 1 And Target.Row > 2 And Target.Column = 6 Then
If Not IsArray(pubArrList) Then
Call ArrCreate
.List = pubArrList
End If
.Visible = False
.Text = ""
If .ListCount < pubUBound Then
.List = pubArrList
End If
.Top = Target.Top
.Left = Target.Left
.Height = Target.Height
.Width = Target.Width
.Visible = True
.Activate
Else
If .Visible = True Then
.Visible = False
End If
End If
End With
End Sub
Private Sub ComboBox1_Change()
With ComboBox1
If .MatchFound Then
ActiveCell.Value = .Value
ActiveCell.Offset(, 1) = .List(, 1)
ActiveCell.Offset(, 2) = .List(, 2)
End If
End With
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
ActiveCell.Offset(1).Select
End If
End Sub
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Not IsArray(pubArrList) Then Exit Sub
Select Case KeyCode
Case 9, 13, 37 To 40
Case Else
If ComboBox1 > "" Then ComboBox1.DropDown
Dim StrItem As String
Dim n As Long, r As Long
Dim c As Byte, col As Byte
Dim GetRows(), ArrFilter()
col = IIf(CheckBox1, 2, 1)
StrItem = "*" & UCase(ComboBox1) & "*"
For r = 1 To pubUBound
If UCase(pubArrList(r, col)) Like StrItem Then
n = n + 1
ReDim Preserve GetRows(1 To n)
GetRows(n) = r
End If
Next
If n > 0 Then
ReDim ArrFilter(1 To n, 1 To 3)
For c = 1 To 3
For r = 1 To n
ArrFilter(r, c) = pubArrList(GetRows(r), c)
Next
Next
ComboBox1.List = ArrFilter
Else
ComboBox1.List = Array()
End If
End Select
End Sub
Anh Nghĩa ơi! Sao file này em mở trên Office 2010 thì codekhông chạy. Nhờ anh chỉ cách giúp em với. Tại giờ em muốn chuyển sang Office2010 để dùng luôn.
file này của bạn mình mở trên Office 2010 , 2013 , 32 bit , 64 bit đều hoạt động tốt , không biết máy của bạn xài Office nào
Gửi anh Hoàng Trọng Nghĩa . Cám ơn giải pháp của anh . Em đã gặp vấn đề tương tự và tìm đc giải pháp ở đây
Nhưng có 1 điều này mong anh giúp
khi ta chọn 1 item nào đó bằng Click chuột . chẳng hạn trong hình này là mã B15
ta đc giá trị item đó như trong hình
lúc này xảy ra vấn đề :
Khi ấn tiếp nút ARROW DOWN thì giá trị B15 bị đổi thành B16 (item tiếp theo trong List)
=> làm sổ sách sai => đuổi việc
Mong muốn của em ở đây là làm sao sau khi chọn đc mã hàng mong muốn bằng cách click chuột thì khi bấm tiếp nút ARROW DOWN
sẽ nhảy Select xuống ô ngay dưới (mũi tên chỉ vào) hoặc ít nhất thì cũng ngăn tình trạng bị đổi mã hàng sau khi đã click chọn mã hàng xong
Mong đc giúp đỡ
Anh Nghĩa ơi! Sao file này em mở trên Office 2010 thì codekhông chạy. Nhờ anh chỉ cách giúp em với. Tại giờ em muốn chuyển sang Office2010 để dùng luôn.
file này của bạn mình mở trên Office 2010 , 2013 , 32 bit , 64 bit đều hoạt động tốt , không biết máy của bạn xài Office nào
Gửi anh Hoàng Trọng Nghĩa . Cám ơn giải pháp của anh . Em đã gặp vấn đề tương tự và tìm đc giải pháp ở đây
Nhưng có 1 điều này mong anh giúp
khi ta chọn 1 item nào đó bằng Click chuột . chẳng hạn trong hình này là mã B15 View attachment 135230
ta đc giá trị item đó như trong hình View attachment 135231
lúc này xảy ra vấn đề :
Khi ấn tiếp nút ARROW DOWN thì giá trị B15 bị đổi thành B16 (item tiếp theo trong List) View attachment 135232
=> làm sổ sách sai => đuổi việc
Mong muốn của em ở đây là làm sao sau khi chọn đc mã hàng mong muốn bằng cách click chuột thì khi bấm tiếp nút ARROW DOWN
sẽ nhảy Select xuống ô ngay dưới (mũi tên chỉ vào) hoặc ít nhất thì cũng ngăn tình trạng bị đổi mã hàng sau khi đã click chọn mã hàng xong
Mong đc giúp đỡ