Cách hiển thị đầy đủ nội dung text trong Listbox excel 2003 (4 người xem)

  • Thread starter Thread starter lesong
  • Ngày gửi Ngày gửi
Liên hệ QC

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

lesong

Thành viên mới
Tham gia
27/12/10
Bài viết
13
Được thích
4
Nghề nghiệp
Công tác đoàn thể.
Báo cáo với các anh chị, em có một file download được trên mạng về vấn đề quay số trúng thưởng. Sau đó em chuyển thành: nhấn nút thì tên Chi đoàn hiện ra, mã câu hỏi hiện ra và bên dưới là nội dung câu hỏi. Nhưng vấn đề em không thể làm được là: Nội dung câu hỏi không thể hiện được hết trong ListBox. Em đã tìm kiếm trên mạng rất nhiều, mất cả ăn cả ngủ, nhưng cuối cùng cũng không ra. Đành phải làm phiền các anh chị. Anh chị cố gắng giúp dùm em sớm nhé!
Em chân thành cảm ơn rất nhiều!
 

File đính kèm

Báo cáo với các anh chị, em có một file download được trên mạng về vấn đề quay số trúng thưởng. Sau đó em chuyển thành: nhấn nút thì tên Chi đoàn hiện ra, mã câu hỏi hiện ra và bên dưới là nội dung câu hỏi. Nhưng vấn đề em không thể làm được là: Nội dung câu hỏi không thể hiện được hết trong ListBox. Em đã tìm kiếm trên mạng rất nhiều, mất cả ăn cả ngủ, nhưng cuối cùng cũng không ra. Đành phải làm phiền các anh chị. Anh chị cố gắng giúp dùm em sớm nhé! Em chân thành cảm ơn rất nhiều!
"Bật" thanh trượt ngang
Mã:
 ListBox1.ScrollBars = fmScrollBarsHorizontal
 
Upvote 0
Dạ thưa thầy, em rất cảm ơn thầy về gợi ý, nhưng em thật sự em không biết chèn vào chỗ nào cho đúng cả. Mong thầy bỏ chút thời gian tận tình giúp đỡ! Em xin chân thành cảm ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ thưa thầy, em rất cảm thầy về gợi ý, nhưng em thật sự em không biết chèn vào chỗ nào cho đúng cả. Mong thầy bỏ chút thời gian tận tình giúp đỡ! Em xin chân thành cảm ơn!

Cái đó không xài được trong trường hợp ListBox nha bạn (có lẽ Thầy siwtom nhầm với Frame thì phải).

Tôi nghĩ bạn nên chọn trong thuộc tính của ListBox như sau:

1) ColumnWidths = 102 pt;2000 pt

(độ dài của ColumnWidths vượt quá Width của listbox, tự nhiên sẽ hiển thị Scrollbar)

2) TextAlign nên chọn là 1 (fmTextAlignLeft), để dễ nhìn.

Nhưng tốt nhất muốn có câu hỏi đầy đủ, nên chọn MsgBox để hiển thị câu hỏi, còn listbox chỉ ghi nhận lại thôi.

(Cái này giống rút thăm trúng thưởng của thầy NDU quá nhỉ).
 
Upvote 0
Dạ thưa thầy, em rất cảm ơn thầy về gợi ý, nhưng em thật sự em không biết chèn vào chỗ nào cho đúng cả. Mong thầy bỏ chút thời gian tận tình giúp đỡ! Em xin chân thành cảm ơn!

Xin lỗi bạn. Đúng là tôi nhầm, ListBox không có thuộc tính đó.
Muốn có ScrollBar thì làm như bạn Hoàng Trọng Nghĩa hướng dẫn. Tuy nhiên ListBox được thiết kế không phải để nhập cả một đoạn văn dài.

Tôi nghĩ bạn nên dùng control khác cho câu hỏi, và CheckBox cho các câu trả lời. Cho câu hỏi có thể dùng vd. Label. Nếu bạn dùng Label thì sau khi đặt xuống Form: AutoSize = TRUE --> kéo Label cho đủ độ dài (ngang). Sau khi nhập Text (Label.Caption = "hichic") thì kiểm tra và nếu cần thì thêm Height cho Form, và tăng Top cho các control "ở dưới".

Nói chung có nhiều cách giải quyết.
 
Upvote 0
Em rất chân thành cảm ơn anh Hoàng Trọng Nghĩa! Em chỉ download bài của anh Nguyễn Anh Tuấn (atmt17@yahoo.com) để chỉnh sửa phù hợp với công tác Đoàn. Chứ thực ra em cũng không biết gì về VBA. Em sẽ theo hướng dẫn của anh, thời gian gấp quá! Nhưng em vẫn thích hiển thị đầy đủ đoạn text trong khung hơn. Hì hì, em hơi cầu toàn thì phải! Em cảm ơn anh và mọi người! Chúc anh và các thành viên sức khỏe, hạnh phúc! Chúc GPE duy trì và phát triển mạnh mẽ!
 
Lần chỉnh sửa cuối:
Upvote 0
Xin lỗi bạn. Đúng là tôi nhầm, ListBox không có thuộc tính đó.
Muốn có ScrollBar thì làm như bạn Hoàng Trọng Nghĩa hướng dẫn. Tuy nhiên ListBox được thiết kế không phải để nhập cả một đoạn văn dài.

Tôi nghĩ bạn nên dùng control khác cho câu hỏi, và CheckBox cho các câu trả lời. Cho câu hỏi có thể dùng vd. Label. Nếu bạn dùng Label thì sau khi đặt xuống Form: AutoSize = TRUE --> kéo Label cho đủ độ dài (ngang). Sau khi nhập Text (Label.Caption = "hichic") thì kiểm tra và nếu cần thì thêm Height cho Form, và tăng Top cho các control "ở dưới".

Nói chung có nhiều cách giải quyết.
Thầy ơi, có cách nào làm cho cái Label chỉ hiện sau khi "câu hỏi được chọn" dừng lại và mất đi khi mình click vào chi đoàn 2 không thầy? Thầy chỉ em với!
 
Upvote 0
Mình tham gia 1 mẹo dùng Tooltip để hiển thị.
Thêm 1 Sub sự kiện để nạp nội dung Tooltip

Mã:
Private Sub ListBox1_Click()
Me.ListBox1.ControlTipText = Me.ListBox1
End Sub


Giờ muốn đọc dòng nào cả câu thì chọn dòng đó rồi di chuyển chột ra ngoài Listbox và chuyển trở lại sẽ hiện Nội dung Tooltip
 

File đính kèm

Upvote 0
Em rất chân thành cảm ơn anh Hoàng Trọng Nghĩa! Em chỉ download bài của anh Nguyễn Anh Tuấn (atmt17@yahoo.com) để chỉnh sửa phù hợp với công tác Đoàn. Chứ thực ra em cũng không biết gì về VBA. Em sẽ theo hướng dẫn của anh, thời gian gấp quá! Nhưng em vẫn thích hiển thị đầy đủ đoạn text trong khung hơn. Hì hì, em hơi cầu toàn thì phải! Em cảm ơn anh và mọi người! Chúc anh và các thành viên sức khỏe, hạnh phúc! Chúc GPE duy trì và phát triển mạnh mẽ!

Quả thật là file của Thầy anhhtuan1066, và cũng là một người thôi (ndu96081631).

Tôi thấy bạn cải tiến cũng hay đấy, nhưng rất nữa vời, file đó mà chạy được thì cũng quá lạ đó. Thấy bạn gấp quá mà lại gần tới ngày 2/9 rồi, tôi giúp bạn để hoàn thành CÔNG TÁC ĐOÀN của bạn.

Tôi thêm cho bạn cái LABEL thông báo nội dung câu hỏi, và đồng thời sửa lại cấu trúc trong sheet, bạn cứ việc điền tiếp thông tin câu hỏi vào và mã số câu hỏi cũng như nội dung câu hỏi nữa thôi.

Chúc bạn vui.

Toàn bộ code sẽ như sau:

Code chính:

[GPECODE=vb]

Private Sub TimChiDoan()
Dim ViTri As Range, Col As Long
lblNoiDung.Visible = False
ListBox1.Visible = True
With Sheets("Sheet1")
Set ViTri = .UsedRange.Find(lblTenChiDoan.Caption, LookIn:=xlValues, LookAt:=xlWhole)
If ViTri Is Nothing Then
lblNoiDung.Caption = "CHI " & ChrW(272) & "OÀN NÀY " & ChrW(272) & _
"Ã HOÀN T" & ChrW(7844) & "T TOÀN B" & ChrW(7896) & " S" & ChrW(7888) & _
" CÂU H" & ChrW(7886) & "I."
ListBox1.Visible = False
lblNoiDung.Visible = True
Me(cmdbttn).Enabled = False
Else
Dim i As Long, iRnd As Long, iRow As Long
Col = ViTri.Column
With .Range(.Range(.Cells(2, Col).Address), .Range(.Cells(65536, Col + 1).Address).End(xlUp))
iRow = .Rows.Count
For i = 1 To 50
Randomize
iRnd = Int(iRow * Rnd()) + 1
lblMaCauHoi.Caption = .Cells(iRnd, 2)
Sleep i
UserForm1.Repaint
Next
.Cells(iRnd, 1).Resize(, 2).Delete 2
End With

For i = 1 To UBound(NoiDung)
If NoiDung(i, 1) = Val(lblMaCauHoi.Caption) Then
lblNoiDung.Caption = NoiDung(i, 2)
Exit For
End If
Next

With ListBox1
iRow = .ListCount
.AddItem lblTenChiDoan.Caption
.List(iRow, 1) = lblMaCauHoi.Caption
.List(iRow, 2) = lblNoiDung.Caption
.ListIndex = iRow
End With
ListBox1.Visible = False
lblNoiDung.Visible = True
End If
End With
End Sub
[/GPECODE]

Các nút lệnh từ 1 đến 6:

[GPECODE=vb]Private Sub cmdChiDoan1_Click()
lblTenChiDoan.Caption = cmdChiDoan1.Caption
cmdbttn = cmdChiDoan1.Name
Call TimChiDoan
End Sub
[/GPECODE]

Bạn xem file thử có đúng ý mình chưa nhé!
 

File đính kèm

Upvote 0
Hi hi hi! Em cảm ơn anh Hoàng Trọng Nghĩa nhiều nhiều! Quả thật khi chạy thử file rồi em vui mừng không thể tả được! Em cứ ngồi cười mà mọi người ngơ ngác. Em cũng không biết dùng từ nào để nói lời cảm ơn của em dành cho anh nữa! Em chân thành cảm ơn anh rất nhiều! Chúc anh và gia đình thật nhiều sức khỏe, thành công và hạnh phúc!
 
Upvote 0
Hi hi hi! Em cảm ơn anh Hoàng Trọng Nghĩa nhiều nhiều! Quả thật khi chạy thử file rồi em vui mừng không thể tả được! Em cứ ngồi cười mà mọi người ngơ ngác. Em cũng không biết dùng từ nào để nói lời cảm ơn của em dành cho anh nữa! Em chân thành cảm ơn anh rất nhiều! Chúc anh và gia đình thật nhiều sức khỏe, thành công và hạnh phúc!

À, tôi quên chưa đặt lại tên nút lệnh CHI ĐOÀN 6, bạn đặt lại tên cho nút lệnh ấy Name: cmdChiDoan6 trong Properties của nút lệnh đó bạn nhé.

Sorry cho sự thiếu sót này.

-----------------------------------------------

Có một điều tôi đang thắc mắc là, nếu các chi đoàn cùng thi và câu hỏi CHI ĐOÀN 1 vừa hỏi xong thì CHI ĐOÀN 2 lại có câu hỏi giống y chang như thế, liệu có vấn đề gì không nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
Phiên bản mới.

Tôi lại phải làm 1 phiên bản mới cho bạn, tùy vào trường hợp mà dùng.

Tôi có hướng dẫn trong file như sau:

1) Mỗi Chi đoàn được rút thăm bao nhiêu lần thì copy với số hàng tương ứng (rút 6 lần thì copy xuống 6 hàng theo CỘT CHI ĐOÀN).


2) Nếu giả sử được rút 6 lần thì tổng số câu hỏi sẽ phải 6 hàng x 6 cột = 36 câu trở lên.


3) Như vậy thì mỗi lần rút sẽ ngẫu nhiên trong toàn bộ số câu và sau đó mỗi câu hỏi sẽ mất đi và mỗi lượt chi đoàn cũng vậy, dĩ nhiên sẽ không trùng.


4) Nên làm sẳn bên sheet BackUp (các cột chi đoàn, các nội dung câu hỏi) rồi copy lần lượt qua Sheet1 rồi Sheet2 tương ứng để khi trong quá trình chạy thử mà nó xóa tùm lum thì còn có dữ liệu để restore lại được.

Code nó cũng khác đi một chút, nhưng sẽ đơn giản hơn file vừa rồi.

Mã:
Private Sub TimChiDoan()
    Dim ViTri As Range
    lblNoiDung.Visible = False
    ListBox1.Visible = True
    Set ViTri = Sheets("Sheet1").UsedRange.Find(lblTenChiDoan.Caption, LookIn:=xlValues, LookAt:=xlWhole)
    If ViTri Is Nothing Then
        lblNoiDung.Caption = "CHI " & ChrW(272) & "OÀN NÀY " & ChrW(272) & _
                             "Ã HOÀN T" & ChrW(7844) & "T TOÀN B" & ChrW(7896) & " S" & ChrW(7888) & _
                             " CÂU H" & ChrW(7886) & "I."
        ListBox1.Visible = False
        lblNoiDung.Visible = True
        Me(cmdbttn).Enabled = False
    Else
        Dim i As Long, iRnd As Long, iRow As Long
        ViTri.Delete 2
        With Range(Sheets("Sheet2").Range("A2"), Sheets("Sheet2").Range("A65536").End(xlUp))
            iRow = .Rows.Count
            For i = 1 To 50
                Randomize
                iRnd = Int(iRow * Rnd()) + 1
                lblMaCauHoi.Caption = .Cells(iRnd, 1)
                Sleep i
                UserForm1.Repaint
            Next
            lblNoiDung.Caption = .Cells(iRnd, 2)
            .Cells(iRnd, 1).Resize(, 2).Delete 2
        End With
        With ListBox1
            iRow = .ListCount
            .AddItem lblTenChiDoan.Caption
            .List(iRow, 1) = lblMaCauHoi.Caption
            .List(iRow, 2) = lblNoiDung.Caption
            .ListIndex = iRow
        End With
        ListBox1.Visible = False
        lblNoiDung.Visible = True
    End If
End Sub
 

File đính kèm

Upvote 0
Dạ báo cáo anh! Hôm nay em mới có dịp vào lại GPE. Em cảm thấy rất vui khi nhận được sự giúp đỡ rất chân tình của anh! Khi em nhận được file trước của anh em đã phát hiện Chi đoàn 6 không thể chạy được, nhưng sau một thời gian mò mẫm, cuối cùng thì đã chạy.
Và em cũng muốn chia vui là: tối hôm qua, chương trình do bọn tổ chức đã thành công tốt đẹp. Trong đó, được khen ngợi nhất là sự lựa chọn câu hỏi mang tính khách quan!
Hữu duyên thiên lý năng tương ngộ.
Em cảm ơn anh rất nhiều!
 
Upvote 0
Dạ báo cáo anh! Hôm nay em mới có dịp vào lại GPE. Em cảm thấy rất vui khi nhận được sự giúp đỡ rất chân tình của anh! Khi em nhận được file trước của anh em đã phát hiện Chi đoàn 6 không thể chạy được, nhưng sau một thời gian mò mẫm, cuối cùng thì đã chạy.
Và em cũng muốn chia vui là: tối hôm qua, chương trình do bọn tổ chức đã thành công tốt đẹp. Trong đó, được khen ngợi nhất là sự lựa chọn câu hỏi mang tính khách quan!
Hữu duyên thiên lý năng tương ngộ.
Em cảm ơn anh rất nhiều!

Sau khi kiểm tra lại, tôi đã gửi ngay bài số 11, vì bạn không tiếp tục theo dõi nên phải mò mẫm thêm thôi.

Vã lại tôi cũng đã tính tới chuyện trùng câu hỏi và đã post lên file mới, bạn cũng không biết vì không tiếp tục theo dõi bài viết.

Kinh nghiệm là một khi đã có đáp án, các thành viên được giúp đỡ nên nán lại theo dõi một thời gian ngắn nữa bài viết của mình, bởi người giúp đỡ sau khi làm xong chưa check kỹ các vấn đề phát sinh, hoặc một cao thủ khác đưa ra phương án tối ưu hơn, cho nên mất thời gian một chút các bạn được lợi nhiều hơn đấy!
 
Upvote 0
Dạ vâng! Tại vì nơi chỗ bọn em đang công tác là nơi miền núi, hẻo lánh, khó khăn! Có dịp bọn em mới ra được chỗ có internet. Nhưng em cũng cảm ơn anh đã hướng dẫn em kinh nghiệm quý báu đó! Em cảm ơn anh vì tất cả! Em rất vui được anh giúp đỡ! Chúc anh và gia đình sức khoẻ và hạnh phúc!
 
Upvote 0
Web KT

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

Back
Top Bottom