Page 1 of 1

Vướng mắc một chút về VBA trong Word

Posted: Fri 01/01/2010 4:21 pm
by ngaydautiendihoc
Xin hỏi mọi người 1 việc
Trong Excel có thể dùng Application.Transpose để gán một mảng vào trong Combobox nhưng trong Word thì lại không được. Vậy có ai biết làm cách nào để khắc phục trường hợp này không?
Xin cảm ơn.

Re: Vướng mắc một chút về VBA trong Word

Posted: Fri 01/01/2010 7:58 pm
by truongphu
Lâu ngày nhỉ !
ngaydautiendihoc wrote:Excel có thể dùng Application.Transpose


Bạn đã rõ như thế, cớ sao hỏi thêm?
Chèn Excel vào để gọi hàm, thế thôi:

Code: Select all

Set aaa = CreateObject("Excel.Application")
aaa.WorksheetFunction.Transpose (Arg1)


Thật ra, tôi cũng chưa bao giờ dùng hàm nầy :D

Re: Vướng mắc một chút về VBA trong Word

Posted: Fri 01/01/2010 9:43 pm
by ngaydautiendihoc
Cảm ơn bác, em nói cụ tỉ (cụ thể và tỉ mỉ) để bác hình dung giúp
Em truy xuất dữ liệu trong 1 file Access sau đó hiển thị lên Combobox
Trong Excel thì chỉ cần làm như sau:

Dim ArrayAny as Variant
ArrayAny = Rs.GetRows 'Rs as ADODB.Recordset
Combo1.List = Application.Transpose(ArrayAny)

Là có thể gán toàn bộ các phần tử trong 1 mảng cho Combo nhưng trong Word thì lại không được
Hy vọng nhận được những chỉ giáo cụ tỉ của bác.

Re: Vướng mắc một chút về VBA trong Word

Posted: Sat 02/01/2010 9:30 am
by truongphu
Nói cho nhanh là tôi không thạo lắm!

ngaydautiendihoc wrote:Combo1.List = Application.Transpose(ArrayAny)


* Combo1.List Không thể nào áp đặt với dấu = như thế
* Cho dù dùng Combo1 của User Form; tôi đã thử cả với ListBox của User Form

*Application.Transpose: Không thể nào có hàm Transpose thuộc Class Application
Muốn dùng hàm Transpose, phải qua Class WorksheetFunction:

Code: Select all

Application.WorksheetFunction.Transpose


Và đương nhiên là Code sau đây không chạy: (tôi vẫn trích dẫn cho rõ ý bạn, dùng User Form của Excel có chèn ADO 2.8)

Private Sub CommandButton1_Click()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rcArray As Variant
Dim sSQL As String

cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
ThisWorkbook.Path & "\db2.mdb" & ";"

rst.Open "SELECT * FROM Table1;", cnt
rcArray = rst.GetRows

With Me.ListBox1
.Clear
.ColumnCount = 10
.List = Application.Transpose(rcArray)
.ListIndex = -1
End With

'Close ADO objects
rst.Close
cnt.Close
Set rst = Nothing
Set cnt = Nothing
End Sub


Có thể bạn nào có ý kiến khác chăng? ngochoan2006 xuất hiện đi !

Re: Vướng mắc một chút về VBA trong Word

Posted: Sat 02/01/2010 11:52 am
by vietteiv
truongphu wrote:ngochoan2006 xuất hiện đi !

hihi chú truongphu gọi thêm đồng minh kìa, phen này ngaydautiendihoc khổ rồi đây :D

Re: Vướng mắc một chút về VBA trong Word

Posted: Sat 02/01/2010 12:24 pm
by ngaydautiendihoc
Ui, có gì mà khổ chứ.
Vấn đề đau đầu là cái đoạn code này:
.List = Application.Transpose(rcArray)
Khi viết trong VBA Excel thì nó chạy ầm ầm nhưng khi chuyển sang VBA Word thì lại báo lỗi không có hàm Transpose. Cùng họ Office với nhau sao lại phân biệt thế nhỉ. Lão Bill chơi khó nhau quá, chẳng lẽ lao ta bắt anh em mình phải dùng For Next à?