sacalataba127
Thành viên hoạt động



- Tham gia
- 6/4/16
- Bài viết
- 148
- Được thích
- 12
- Giới tính
- Nam
bạn đăng cái code bạn lỗi lên xem nàoEm muốn lấy giá trị của nhiều ô gán vào mảng để hiển thị dữ liệu khi chạy combobox ạ,
em bị lỗi lấy dữ liệu và gán vào mảng ạ
Em có gửi file đính kèm, các bác giúp với ạ.
Chúc các bác cuối tuần vui vẻ ạ
dạ vâng, nhờ bác xem nên sửa lại như thế nào ạCâu lệnh này đang không chuẩn:
Mã:showList1 = shSanPham.Range("B25:K25" & shSanPham.[K25].End(xlToLeft).Column)
mục đích để combobox ở ô K4 sheet Nhập Bán hiện hiên dữ liệu lấy từ Sheet Sản Phẩm đó ạVậy ước mong kết quả sau câu lệnh này là gì?
Fải chăng gán dữ liệu vùng [B25:K25] vô mảng?
Nếu là câu lệnh
Lại là chuyện khác.Mã:showList1 = shSanPham.Range({B25], [K25].End(xlToLeft))
Sub CreateList1()
Dim lastCol As Long
With Sheet3
lastCol = .Range("L25").End(xlToLeft).Column
If lastCol = 2 Then
ReDim showList1(1 To 1, 1 To 1)
showList1(1, 1) = .Range("B25").Value
ElseIf lastCol > 2 Then
showList1 = .Range("B25").Resize(, lastCol - 1).Value
End If
End With
cc = UBound(showList1)
End Sub
cảm ơn bác. nhưng khi dùng Ubound(showlist1) thì chỉ = 1 trong khi có tới 10Sửa thành
Mã:Sub CreateList1() Dim lastCol As Long With Sheet3 lastCol = .Range("L25").End(xlToLeft).Column If lastCol = 2 Then ReDim showList1(1 To 1, 1 To 1) showList1(1, 1) = .Range("B25").Value ElseIf lastCol > 2 Then showList1 = .Range("B25").Resize(, lastCol - 1).Value End If End With cc = UBound(showList1) End Sub
Tôi chỉ sửa showList1 thôi. Không có hứng xem các code khác.
Thì bạn cố tình làm thế còn kêu gì? Bạn nhập 1 dòng vào mảng thì dĩ nhiên mảng đó có 1 dòng (1 hoặc nhiều cột), tức Ubound(showList1) = 1 là đúng rồi còn gì.cảm ơn bác. nhưng khi dùng Ubound(showlist1) thì chỉ = 1 trong khi có tới 10
Bác xem giùm e thử
ComboBox1.List = Application.Transpose(showList1)
Public showList1()
Public cc As Long
Sub CreateList1()
Dim lastCol As Long, showList1()
With Sheet3
lastCol = .Range("L25").End(xlToLeft).Column
If lastCol = 2 Then
ReDim showList1(1 To 1, 1 To 1)
showList1(1, 1) = .Range("B25").Value
ElseIf lastCol > 2 Then
showList1 = .Range("B25").Resize(, lastCol - 1).Value
End If
End With
Sheet5.ComboBox1.List = Application.Transpose(showList1)
End Sub
cảm ơn bác đã chỉ. Nhưng em còn sử dụng chúng cho nhiều mục đích nữa nên mới khai báo vậyThì bạn cố tình làm thế còn kêu gì? Bạn nhập 1 dòng vào mảng thì dĩ nhiên mảng đó có 1 dòng (1 hoặc nhiều cột), tức Ubound(showList1) = 1 là đúng rồi còn gì.
Nhưng cái đó đâu có quan trọng. Tôi thấy là trong code mà tôi đã không xem thì có
Tức khi đó trong ComboBox1 sẽ có nhiều dòng.Mã:ComboBox1.List = Application.Transpose(showList1)
Còn nếu muốn khác thì.
1. Bỏ
Mã:Public showList1() Public cc As Long
2.
3. Trong các code còn lại không dùng showList1 nữa.Mã:Sub CreateList1() Dim lastCol As Long, showList1() With Sheet3 lastCol = .Range("L25").End(xlToLeft).Column If lastCol = 2 Then ReDim showList1(1 To 1, 1 To 1) showList1(1, 1) = .Range("B25").Value ElseIf lastCol > 2 Then showList1 = .Range("B25").Resize(, lastCol - 1).Value End If End With Sheet5.ComboBox1.List = Application.Transpose(showList1) End Sub
Public showList1()
Sub CreateList1()
Dim lastCol As Long
With Sheet3
lastCol = .Range("L25").End(xlToLeft).Column
If lastCol = 2 Then
ReDim showList1(1 To 1, 1 To 1)
showList1(1, 1) = .Range("B25").Value
ElseIf lastCol > 2 Then
showList1 = Application.Transpose(.Range("B25").Resize(, lastCol - 1).Value)
End If
End With
End Sub
...
Arr = ComboBox1.List
... dùng Arr