Các câu hỏi về Form trong Excel VBA

Liên hệ QC

Tường_Vi

Thành viên tiêu biểu
Tham gia
19/4/10
Bài viết
482
Được thích
121
Nghề nghiệp
Luôn tìm kiếm một vị trí tốt hơn
Private Sub UserForm_Initialize()
.......................
.......................
.......................
End Sub


Em xin hỏi, sự kiện khí nào mình dùng sự kiện này Initialize

Cám ơn
 
Chắc là tùy biến chút xíu kiểu này nè bạn
Cảm ơn bạn, một cách làm với ý tưởng rất hay,
"numberLabel = rst.Fields.Count"
Như vậy là tiêu đề sẽ lấy luôn các trường trong câu lệnh truy vấn:
Str = "Select*from [Sheet1$]"
Thay vì là lấy trực tiếp dưới bảng tính, như vậy chỉ cần xử lý câu lệnh truy vấn theo ý là được, hihi
 
Upvote 0
đang tìm tài liệu làm cái tiêu đề cho Listbox khi xài SQL nó lấy dữ liệu lên mà phân vân nên chọn Hình 1 hay hình 2
Hình số 1
TeiDe1.PNG
Hình số 2 code bài 380
TeiDe2.PNG

tất nhiên mọi cái là tự động hết rồi đấy
 
Upvote 0
Chào các thầy cô và anh chị ạ.
Hiện tại em đang có vấn đề muốn nhờ mọi người chỉ giúp.
Em có đưa dữ liệu vô listbox trên Userform rồi. Có 2 vấn đề muốn hỏi thầy cô anh chị:
1. Làm thế nào List box nó vẫn có tiêu đề tương ứng như dưới sheet Data
2. Khi mà Kích chọn trong listbox. Nó sẽ trả thẳng xuống dữ liệu xuống 1 sheet khác (sheet Form) như hình ạ
1608357312834.png
Em xin cám ơn nhiều ạ
 

File đính kèm

  • demo.xlsb
    63.8 KB · Đọc: 21
Upvote 0
Chào các thầy cô và anh chị ạ.
Hiện tại em đang có vấn đề muốn nhờ mọi người chỉ giúp.
Em có đưa dữ liệu vô listbox trên Userform rồi. Có 2 vấn đề muốn hỏi thầy cô anh chị:
1. Làm thế nào List box nó vẫn có tiêu đề tương ứng như dưới sheet Data
2. Khi mà Kích chọn trong listbox. Nó sẽ trả thẳng xuống dữ liệu xuống 1 sheet khác (sheet Form) như hình ạ
View attachment 251498
Em xin cám ơn nhiều ạ
1. Lấy luôn dòng tiêu đề vào data cho listbox thì nó sẽ có tiêu đề :D
2. _)()(-
 
Upvote 0
1. Dữ liệu ngày tháng của bạn không chuẩn. Vẫn cộng trừ được nhưng rất có thể dùng với vài hàm Excel sẽ bị lỗi. Nhìn hình bạn sẽ thấy tôi nhập ngày tháng hiện tại vào C2. Nó có dạng 19.12.2020 vì trên máy tôi thiết lập như thế, và được căn phải. Dữ liệu cột C của bạn lại là dạng dd/mm/yyyy với ký tự "/", và được căn trái.

listbox.jpg

Hãy chuẩn hóa dữ liệu: chọn cột C -> Data -> Text to columns -> Next -> Next -> chọn option Date -> bên cạnh chọn DMY -> Finish.

2. Tôi đề nghị trong Sub timkiem_Click
sửa
Mã:
Res(k, 3) = sArr(i, 3)
thành
Mã:
Res(k, 3) = Format(sArr(i, 3), "Short Date")
Mục đích là để trên những máy khác như máy tôi thì nhìn thấy vd. 07.01.1974 (y như thiết lập trong system) chứ không phải là 07/01/1974 (quái dị, vì trên sheet là 07.01.1974)
Em có đưa dữ liệu vô listbox trên Userform rồi. Có 2 vấn đề muốn hỏi thầy cô anh chị:
1. Làm thế nào List box nó vẫn có tiêu đề tương ứng như dưới sheet Data
ListBox của bạn chỉ có 5 cột nên tôi đề nghị kéo rộng UserForm chút và thiết lập Width của ListBox bằng 750. Lúc này chỉ thêm 5 Label nối đuôi nhau ngay trên ListBox để làm tiêu đề.
2. Khi mà Kích chọn trong listbox. Nó sẽ trả thẳng xuống dữ liệu xuống 1 sheet khác (sheet Form) như hình ạ
Vd. thêm code
Mã:
Private Sub Lbdulieu_Click()
Dim k As Long, chiso
    If Lbdulieu.ListIndex < 0 Then Exit Sub
    chiso = Array(2, 3, 4, 6, 8)    ' chi so dong cua C2, C3, C4, C6, C8
    For k = 0 To UBound(chiso)
        If k = 2 Then
            ThisWorkbook.Worksheets("Form").Cells(chiso(k), "C").Value = CDate(Lbdulieu.List(Lbdulieu.ListIndex, k))
        Else
            ThisWorkbook.Worksheets("Form").Cells(chiso(k), "C").Value = Lbdulieu.List(Lbdulieu.ListIndex, k)
        End If
    Next k
End Sub
 
Upvote 0
@batman1 con xin cảm ơn những góp ý của chú. Chú giải thích con thấy rất dễ hiểu. Thật sự là làm việc với ngày tháng. Nó tạo cho con cảm giác hơi sợ. Những gì chú chỉ con cảm thấy cảnh giác với dữ liệu của mình rất nhiều. Do con đang tìm hiểu về userform nên cứ ngáo ngơ thế nào ấy ạ.
Những lưu ý của chú con sẽ tìm cách khắc phục.
Một lần nữa xin cảm ơn chú rất nhiều.
 
Upvote 0
Chào các thầy cô và anh chị ạ.
Hiện tại em đang có vấn đề muốn nhờ mọi người chỉ giúp.
Em có đưa dữ liệu vô listbox trên Userform rồi. Có 2 vấn đề muốn hỏi thầy cô anh chị:
1. Làm thế nào List box nó vẫn có tiêu đề tương ứng như dưới sheet Data
2. Khi mà Kích chọn trong listbox. Nó sẽ trả thẳng xuống dữ liệu xuống 1 sheet khác (sheet Form) như hình ạ
View attachment 251498
Em xin cám ơn nhiều ạ
Tôi đang làm vài thứ có liên quan tới cái Listbox ... áp dụng cho bài của bạn tôi gợi ý cho mà làm he ... nó sẻ rất đẹp đấy
1/ qua link sau xem bài số 26 mục số 1 có file đính kèm ở dưới ... làm cái tiêu đề cho Listbox
LẤY DỮ LIỆU TỰ NGUỒN VÀO LISTBOX | Page 2 | Giải Pháp Excel (giaiphapexcel.com)
2/ Format cột listbox thì bài 386 đã nói rồi
3/ Mò cách tự đông fix cột cho nó vừa với dữ liệu hiện có trên Listbox nữa là đẹp đấy

Vui lòng google Or .... nhé

Chịu khó mà học đi mai mốt tự mà làm lấy nó mới vui
 
Upvote 0
1/ qua link sau xem bài số 26 mục số 1 có file đính kèm ở dưới ... làm cái tiêu đề cho Listbox
LẤY DỮ LIỆU TỰ NGUỒN VÀO LISTBOX | Page 2 | Giải Pháp Excel (giaiphapexcel.com)
Bạn có xem tập tin của người ta không vậy? Ai cũng biết là nếu lấy dữ liệu từ sheet bằng RowSource thì chuyện tiêu đề nó nhỏ như con thỏ, còn nhỏ hơn con thỏ rất nhiều. Chủ thớt có vấn đề với tiêu đề vì chủ thớt có dữ liệu từ việc tìm kiếm, và kết quả được trả về trong MẢNG. Chủ thớt dùng LIST để nhập dữ liệu từ MẢNG vào ListBox. Nếu nói là phải đập dữ liệu từ MẢNG kết quả xuống sheet để có thể dùng RowSource thì vấn đề tầm thường quá. Vì với RowSource tiêu đề là chuyện nhỏ như con thỏ. Cái thú vị hơn là có cách nào không phải đập kết quả từ mảng xuống sheet không thôi.
 
Upvote 0
Bạn có xem tập tin của người ta không vậy? Ai cũng biết là nếu lấy dữ liệu từ sheet bằng RowSource thì chuyện tiêu đề nó nhỏ như con thỏ, còn nhỏ hơn con thỏ rất nhiều. Chủ thớt có vấn đề với tiêu đề vì chủ thớt có dữ liệu từ việc tìm kiếm, và kết quả được trả về trong MẢNG. Chủ thớt dùng LIST để nhập dữ liệu từ MẢNG vào ListBox. Nếu nói là phải đập dữ liệu từ MẢNG kết quả xuống sheet để có thể dùng RowSource thì vấn đề tầm thường quá. Vì với RowSource tiêu đề là chuyện nhỏ như con thỏ. Cái thú vị hơn là có cách nào không phải đập kết quả từ mảng xuống sheet không thôi.
em đang tìm cách lấy dữ liệu vào 1 Array xong làm cái tiêu đề xịn như RowSource mà ko xong .... nó chỉ có như hình ===> ko giống cái gì cả :D

1608818310271.png
 
Lần chỉnh sửa cuối:
Upvote 0
em đang tìm cách lấy dữ liệu vào 1 Array xong làm cái tiêu đề xịn như RowSource mà ko xong .... nó chỉ có như hình ===> ko giống cái gì cả :D
Nếu trong mảng dòng đầu tiên là tiêu đề thì đương nhiên là nó cũng được nhập vào ListBox khi dùng LIST. Bạn ngạc nhiên à? Nhưng tất nhiên cái tiêu đề kia là "nhái" vì đối với ListBox nó cũng chỉ là 1 dòng dữ liệu như các dòng khác. Thế thôi.
 
Upvote 0
Nếu trong mảng dòng đầu tiên là tiêu đề thì đương nhiên là nó cũng được nhập vào ListBox khi dùng LIST. Bạn ngạc nhiên à? Nhưng tất nhiên cái tiêu đề kia là "nhái" vì đối với ListBox nó cũng chỉ là 1 dòng dữ liệu như các dòng khác. Thế thôi.
Em đang sử dụng code sau để AutoFit Cột trong listbox thấy chạy khá tốt . tuy nhiên nếu có cái tiêu đề xịn như RowSource thì nó ko có hiểu ... mà nó chỉ fix cột lý do nó duyệt qua ListBox.ColumnCount ...vấn đề này cũng ko có quan trọng lắm nhưng nhìn vào nó ko có đẹp

vậy Em muốn hỏi
1/ có cách nào viết lại hàm đó cho nó Fix cả cái tiêu đề cột trong RowSource không anh ?!

2/ khi em chuyển code đó vào VB6 thử thì thấy chạy nó lỗi
- lỗi thứ nhất là ko tạo được label ... cái này khả năng do cách khởi tạo trên vb6 nó khác vba ( Control trên vb6 em chưa rành lắm )
- khi em xóa tự động tạo label đi thử chèn 1 cái lable thủ công xong chạy code thì nó cũng lỗi ...
- vậy em muốn hỏi có cách gì viết lại hàm sau cho nó chạy trên VB6 Như trên VBA không Anh ?!

Mong anh chỉ dùm em

Mã:
Public Sub AutofitColumnListbox(ByVal FormName As Object, ByRef ListBox As MSForms.ListBox)
    Dim Zeile As Long, Spalte As Long
    Dim SpaltenBreiten As String, MaxBreite As Double
    Dim Lbl As MSForms.Label
    Set Lbl = FormName.Controls.Add("Forms.label.1", "label1", False)
    Lbl.WordWrap = False
    Lbl.AutoSize = True
    For Zeile = 0 To ListBox.ColumnCount - 1
        MaxBreite = 0
        For Spalte = 0 To ListBox.ListCount - 1
            Lbl.Caption = ListBox.Column(Zeile, Spalte) & ",,,"         
            If MaxBreite < Lbl.Width Then
                MaxBreite = Lbl.Width
            End If
        Next Spalte
        SpaltenBreiten = SpaltenBreiten & CLng(MaxBreite + 1) & ";"
    Next Zeile
    ListBox.ColumnWidths = SpaltenBreiten
    Set Lbl = Nothing
End Sub

Code sau cho Bạn nào đam mê tham khảo thêm của tây
vba - Automatically adapt listbox column width - Stack Overflow
 

File đính kèm

  • ListBox.xlsb
    30.2 KB · Đọc: 15
Lần chỉnh sửa cuối:
Upvote 0
Em đang sử dụng code sau để AutoFit Cột trong listbox thấy chạy khá tốt . tuy nhiên nếu có cái tiêu đề xịn như RowSource thì nó ko có hiểu ... mà nó chỉ fix cột lý do nó duyệt qua ListBox.ColumnCount ...vấn đề này cũng ko có quan trọng lắm nhưng nhìn vào nó ko có đẹp

vậy Em muốn hỏi
1/ có cách nào viết lại hàm đó cho nó Fix cả cái tiêu đề cột trong RowSource không anh ?!
Tôi tư duy đơn giản thôi. Để luôn luôn nhìn trọn tiêu đề thì độ rộng của mỗi cột không thể nhỏ hơn, tức ít nhất là bằng, độ rộng của tiêu đề tương ứng. Tức vào thời điểm "chào buổi sáng" thì không thể có MaxBreite = 0 mà phải MaxBreite = <độ rộng của tiêu đề cột hiện hành>
Ngoài ra mặc định thì Label và ListBox có phông chữ là "Tahoma" với độ lớn bằng 8. Vậy label Lbl có phông chữ là "Tahoma" với độ lớn bằng 8, nhưng trong trường hợp cụ thể thì ListBox có thể bị thay phông chữ bằng vd. "Times New Roman" với độ lớn bằng 10. Code tổng quát tạo Label Lbl với phông chữ "Tahoma" 8. Hậu quả là độ rộng tối thiểu của mỗi cột được tính bằng code sẽ không khớp với độ rộng cần có. Bởi thay đổi tên phông chữ và độ lớn phông chữ của ListBox sẽ thay đổi độ rộng của cột. Label Lbl phải có phông chữ với tên và độ lớn y như cho ListBox. Vậy tôi đề nghị:
1. Thêm
Mã:
Dim tieude
2.
Sau
Mã:
Lbl.AutoSize = True
thêm cụm
Mã:
Lbl.Font.Name = ListBox.Font.Name
    Lbl.Font.Size = ListBox.Font.Size
    If ListBox.ColumnHeads And (ListBox.RowSource <> "") Then
        With Range(ListBox.RowSource)
            tieude = .Offset(-1).Resize(1, .Columns.Count + 1).Value
        End With
    End If
3. Thay
Mã:
MaxBreite = 0
bằng
Mã:
If IsArray(tieude) Then
    Lbl.Caption = tieude(1, Zeile + 1) & ",,,"
    MaxBreite = Lbl.Width
Else
    MaxBreite = 0
End If
2/ khi em chuyển code đó vào VB6 thử thì thấy chạy nó lỗi
- lỗi thứ nhất là ko tạo được label ... cái này khả năng do cách khởi tạo trên vb6 nó khác vba ( Control trên vb6 em chưa rành lắm )
- khi em xóa tự động tạo label đi thử chèn 1 cái lable thủ công xong chạy code thì nó cũng lỗi ...
- vậy em muốn hỏi có cách gì viết lại hàm sau cho nó chạy trên VB6 Như trên VBA không Anh ?!
Trong VB6 làm gì có cái gọi là VBA?
Nếu muốn tôi xem hộ thì đính kèm code VB6. Tôi không phán chỉ trên cơ sở nước bọt.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi tư duy đơn giản thôi. Để luôn luôn nhìn trọn tiêu đề thì độ rộng của mỗi cột không thể nhỏ hơn, tức ít nhất là bằng, độ rộng của tiêu đề tương ứng. Tức vào thời điểm "chào buổi sáng" thì không thể có MaxBreite = 0 mà phải MaxBreite = <độ rộng của tiêu đề cột hiện hành>
Ngoài ra mặc định thì Label và ListBox có phông chữ là "Tahoma" với độ lớn bằng 8. Vậy label Lbl có phông chữ là "Tahoma" với độ lớn bằng 8, nhưng trong trường hợp cụ thể thì ListBox có thể bị thay phông chữ bằng vd. "Times New Roman" với độ lớn bằng 10. Code tổng quát tạo Label Lbl với phông chữ "Tahoma" 8. Hậu quả là độ rộng tối thiểu của mỗi cột được tính bằng code sẽ không khớp với độ rộng cần có. Bởi thay đổi tên phông chữ và độ lớn phông chữ của ListBox sẽ thay đổi độ rộng của cột. Label Lbl phải có phông chữ với tên và độ lớn y như cho ListBox. Vậy tôi đề nghị:
1. Thêm
Mã:
Dim tieude
2.
Sau
Mã:
Lbl.AutoSize = True
thêm cụm
Mã:
Lbl.Font.Name = ListBox.Font.Name
    Lbl.Font.Size = ListBox.Font.Size
    If ListBox.ColumnHeads And (ListBox.RowSource <> "") Then
        With Range(ListBox.RowSource)
            tieude = .Offset(-1).Resize(1, .Columns.Count + 1).Value
        End With
    End If
3. Thay
Mã:
MaxBreite = 0
bằng
Mã:
If IsArray(tieude) Then
    Lbl.Caption = tieude(1, Zeile + 1) & ",,,"
    MaxBreite = Lbl.Width
Else
    MaxBreite = 0
End If

Trong VB6 làm gì có cái gọi là VBA?
Nếu muốn tôi xem hộ thì đính kèm code VB6. Tôi không phán chỉ trên cơ sở nước bọt.
Cảm ơn Anh
Trên VBA theo chỉ dẫn của Anh ... code chạy tốt đúng yêu cầu

1609065656815.png

Trên VB6 code như sau nhưng khi chạy thì cột Listbox nó ko fit lại được
Mã:
Private Sub Form_Load()
    Dim a(1 To 2, 1 To 3) As String
    a(1, 1) = "AAAAAAAAAA"
    a(1, 2) = "BBBB999"
    a(1, 3) = "CCCCCCC2312313131321321"
    a(2, 1) = "AA897979797kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"
    a(2, 2) = "BBBBBBBBBBBBBBB"
    a(2, 3) = "CCC"
    Me.ListBox1.List = a
    Me.ListBox1.ColumnCount = 3
    Call AutofitColumnListbox(Me, ListBox1)
End Sub

Public Sub AutofitColumnListbox(ByVal FormName As Object, ListBox As Object)
    Dim Zeile As Long, Spalte As Long, tieude
    Dim SpaltenBreiten As String, MaxBreite As Double
    Dim Lbl As Object
    Set Lbl = Me.Controls.Add("VB.Label", "Label1")
    Lbl.WordWrap = False
    Lbl.AutoSize = True
    For Zeile = 0 To ListBox.ColumnCount - 1
        MaxBreite = 0
        For Spalte = 0 To ListBox.ListCount - 1
            Lbl.Caption = ListBox.Column(Zeile, Spalte) & ",,,"
            If MaxBreite < Lbl.Width Then
                MaxBreite = Lbl.Width
            End If
        Next Spalte
        SpaltenBreiten = SpaltenBreiten & CLng(MaxBreite + 1) & ";"
    Next Zeile
    ListBox.ColumnWidths = SpaltenBreiten
    Set Lbl = Nothing
End Sub

File đính kèm là code trên VB6 Em chưa làm đúng đươc yêu cầu ... mong Anh chỉnh sửa dùm Em
trên VB6 chỉ fit lại cột listbox cho nó vừa với dữ liệu hiện có của từng cột còn cái tiêu đề xịn như RowSource thì nó cũng không có hổ trợ

cái này em thử nghỉ cách làm giả như cách Anh làm trên VBA xem có được hay ko ... nếu được em sẻ viết chung nó vào 1 hàm vừa tạo tiêu đề giả + fit cột

Mong anh xử lý cho em cái Fit cột listbox trước còn viết tạo tiêu đề giả kèm vào chung 1 hàm nếu có thêm càng tốt nếu ko để em mò thử sức xem sao

kẹt quá lại nhờ tiếp :D

Em cảm ơn Anh
 

File đính kèm

  • ListBox_GPE.rar
    20.9 KB · Đọc: 7
Upvote 0
Trên VB6 code như sau nhưng khi chạy thì cột Listbox nó ko fit lại được
File đính kèm là code trên VB6 Em chưa làm đúng đươc yêu cầu ... mong Anh chỉnh sửa dùm Em
Ý bạn là thế nào? Là code chạy được nhưng chưa đúng yêu cầu? Tôi hỏi vì trên máy tôi không chạy được. Mà tôi nghĩ là không chạy được cũng phải. Vì cái gọi là ListBox1 của bạn chẳng qua là bạn cố tình đặt tên là ListBox1 thôi, còn đó là control PictureBox.

listbox.jpg

Tôi thử làm cho bạn dùng ListBox. Theo tôi code phải như tập tin đính kèm. Bạn có thể test phiên bản khác bỏ 4 dòng từ (A) tới (D).

Fit chuẩn 100% hay không thì tôi cũng kết thúc.

Nên nhớ là ListBox trong VB6 không có cái gọi là List, Column, ColumnCount, ColumnWidths nên viết code không nhẹ nhàng sung sướng như trong VBA.

Bạn tự tìm tòi thêm, tôi dừng ở đây.
 

File đính kèm

  • ListBoxAutoFit.rar
    2.4 KB · Đọc: 10
Upvote 0
chắc tại mình ko được học hành code két có trường có lớp nên nhiều khi câu từ thuật ngữ code két hay trình bày nó cứ chéo cánh vịt hay sao ý
Untitled.png
 

File đính kèm

  • 1609116063340.png
    1609116063340.png
    62.8 KB · Đọc: 20
Lần chỉnh sửa cuối:
Upvote 0
chắc tại mình ko được học hành code két có trường có lớp nên nhiều khi câu từ thuật ngữ code két hay trình bày nó cứ chéo cánh vịt hay sao ý
Bạn hãy cho tôi biết. Rõ ràng tôi tải tập tin ở bài #394 về và thấy bạn dùng PictureBox. Bây giờ tải lại thì thấy bạn dùng ListBox.
 
Upvote 0
Bạn hãy cho tôi biết. Rõ ràng tôi tải tập tin ở bài #394 về và thấy bạn dùng PictureBox. Bây giờ tải lại thì thấy bạn dùng ListBox.
em mới tải lại file bài 394 nè anh
bài đó còn y trang mà anh em có chỉnh sửa gì đâu trong file bài 394 em có chụp cái ảnh use Form 2.0.PNG mà

em biết hỏi anh thì phải chi tiết + rõ ràng nên làm rất cẩn thận đấy :D chứ hỏi người khác nhiều lúc ẩu em chấm mấy cái à ...

1609152551244.png
 
Upvote 0
em mới tải lại file bài 394 nè anh
bài đó còn y trang mà anh em có chỉnh sửa gì đâu trong file bài 394 em có chụp cái ảnh use Form 2.0.PNG mà

em biết hỏi anh thì phải chi tiết + rõ ràng nên làm rất cẩn thận đấy :D chứ hỏi người khác nhiều lúc ẩu em chấm mấy cái à ...
Tôi đã tải lại tập tin. Tôi chỉ trả lời về vấn đề chủ yếu.

ColumnWidths tính bằng Point, Width của Label trên Form bên VBA cũng tính bằng Point. Bên VB6 thì Width của Label có giá trị thay đổi tùy theo ScaleMode của Form. Mặc định thì Form có ScaleMode = Twip. Tức Width của Label được tính bằng Twip. Cũng cùng một Label có Width = 100 Point thì tính bằng Twip là 2000. 2000 là con số cực lớn, đúng không? Lấy con số 2000 làm ColumnWidths thì toi rồi.

Thế nếu dùng API thì trong nhiều hàm phải truyền tham số tính bằng Pixel, mà lại truyền Width của Label, ListBox, CommandButton trong khi ScaleMode = Twip thì teo rồi. Thay vì truyền 133 (pixel) thì lại truyền 2000 (Twip)?

Tóm lại chỉnh ScaleMode của Form thành Point là được. Lúc đó code sẽ lấy 100 làm ColumnWidth. Như thế là chuẩn.

Học VB mà vấn đề cơ bản ScaleMode không biết?
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi đã tải lại tập tin. Tôi chỉ trả lời về vấn đề chủ yếu.

ColumnWidths tính bằng Point, Width của Label trên Form bên VBA cũng tính bằng Point. Bên VB6 thì Width của Label có giá trị thay đổi tùy theo ScaleMode của Form. Mặc định thì Form có ScaleMode = Twip. Tức Width của Label được tính bằng Twip. Cũng cùng một Label có Width = 100 Point thì tính bằng Twip là 2000. 2000 là con số cực lớn, đúng không? Lấy con số 2000 làm ColumnWidths thì toi rồi.

Tóm lại chỉnh ScaleMode của Form thành Point là được. Lúc đó code sẽ lấy 100 làm ColumnWidth. Như thế là chuẩn.

Học VB mà vấn đề cơ bản ScaleMode không biết?
Control em xin chịu ... có viết mấy đâu

1609155495153.png
 
Upvote 0
Web KT
Back
Top Bottom