• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

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

Nơi trao đổi về VBA (Visual Basic for Application), lập trình cho ứng dụng Microsoft Office, AutoCAD...

Moderator: tungblt

ngaydautiendihoc
Thành viên danh dự
Thành viên danh dự
Posts: 262
Joined: Mon 12/03/2007 10:55 pm
Location: Hà Giang
Has thanked: 2 times
Been thanked: 1 time
Contact:

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

Postby ngaydautiendihoc » Fri 01/01/2010 4:21 pm

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.



User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Fri 01/01/2010 7:58 pm

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
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

ngaydautiendihoc
Thành viên danh dự
Thành viên danh dự
Posts: 262
Joined: Mon 12/03/2007 10:55 pm
Location: Hà Giang
Has thanked: 2 times
Been thanked: 1 time
Contact:

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

Postby ngaydautiendihoc » Fri 01/01/2010 9:43 pm

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.

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Sat 02/01/2010 9:30 am

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 !
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
vietteiv
Quản trị
Quản trị
Posts: 1325
Joined: Sat 10/02/2007 12:17 am
Location: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 times
Been thanked: 71 times
Contact:

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

Postby vietteiv » Sat 02/01/2010 11:52 am

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

ngaydautiendihoc
Thành viên danh dự
Thành viên danh dự
Posts: 262
Joined: Mon 12/03/2007 10:55 pm
Location: Hà Giang
Has thanked: 2 times
Been thanked: 1 time
Contact:

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

Postby ngaydautiendihoc » Sat 02/01/2010 12:24 pm

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 à?


Return to “Visual Basic for Application (VBA)”

Who is online

Users browsing this forum: No registered users and 1 guest