Những câu hỏi về code, xin giải thích các code, đề nghị các bạn gửi vào đây

Liên hệ QC
Status
Không mở trả lời sau này.

ST-Lu!

Love Wingchun
Tham gia
19/8/08
Bài viết
730
Được thích
546
Nghề nghiệp
Xích lô một thời
Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.

Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.

BQT

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


Em xin được hỏi 2 đoạn code sau có tương đương nhau ?

Cells(Cells.Rows.Count, 1).End(xlUp).Row có tương đương với [A65000].End(xlup).row

Cám ơn các anh chỉ giáo
 
Chỉnh sửa lần cuối bởi điều hành viên:
các bạn giúp mình cách viết đúng đoạn code này với

mình dùng VBA soan 1 bài test trên Powerpoint gặp phải 1 vướng mắc

bt` phần bài trắc nghiệm mình ra thì chỉ cần kích chuột vào ô chấm điển là ok
Mã:
Private Sub Chamdiem_Click()
Diem.Caption = "0"
If C1.Caption = L2.Caption Then Diem.Caption = Diem.Caption + 1
If C2.Caption = L7.Caption Then Diem.Caption = Diem.Caption + 1
If C3.Caption = L1.Caption Then Diem.Caption = Diem.Caption + 1
If C4.Caption = L3.Caption Then Diem.Caption = Diem.Caption + 1
If C5.Caption = L4.Caption Then Diem.Caption = Diem.Caption + 1
If C6.Caption = L6.Caption Then Diem.Caption = Diem.Caption + 1
If C7.Caption = L5.Caption Then Diem.Caption = Diem.Caption + 1
If Diem.Caption = "7" Then G.Caption = " CHUÙC MÖØNG BAÏN ÑAÕ HOAØN THAØNH XUAÁT SAÉC"
If Diem.Caption = "6" Then G.Caption = " 6/7 BAÏN TÌM RA CHOÃ SAI ROÀI CHÖÙ "
If Diem.Caption = "5" Then G.Caption = " 5/7 THÖÛ XEM LAÏI XEM BAÏN NHAÀM ÔÛ CHOÃ NAØO "
If Diem.Caption = "4" Then G.Caption = " 4/7 KIEÁN THÖÙC CUÛA BAÏN CHÖA ÑÖÔÏC CHAÉC LAÉM"
If Diem.Caption = "3" Then G.Caption = " 3/7 CHAÉC BAÏN CHÖA QUEN VÔÙI CAÙCH ÑIEÀN NAØY"
If Diem.Caption = "2" Then G.Caption = " 2/7 CHAÉC BAÏN CHÖA QUEN VÔÙI CAÙCH ÑIEÀN NAØY"

End Sub
mình có dùng VBA tạo 1 cái đồng hồ đếm ngược và muốn rằng khi nó đếm lùi về tới 0 ( txtSecond.Value = "0" ) thì sẽ tự động chấm điểm như khi mình kích vào ô chấm điểm,
các bạn bớt chút thời gian hướng dẫn mình nhé
thanks các bạn trước !!!
 
Lần chỉnh sửa cuối:
Upvote 0
ai giúp mình với
_______________________________
 
Upvote 0
Em xin hỏi các cao thủ code nào mà từ sheet 1 ta có thể chọn các trường của pivot table ở sh2, mỗi khi muốn chọn phải sang sh hơi chậm, xin cảm ơn
 

File đính kèm

  • MAU THU.xls
    9 KB · Đọc: 8
Lần chỉnh sửa cuối:
Upvote 0
Em xin hỏi các cao thủ code nào mà từ sheet 1 ta có thể chọn các trường của pivot table ở sh2, mỗi khi muốn chọn phải sang sh hơi chậm, xin cảm ơn
Record macro quá trình chọn "trường", nó ra thế này
PHP:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 29/8/2010 by ndu
'

'
    ActiveSheet.PivotTables("PivotTable1").PivotFields("THÁNG").CurrentPage = "TH2"
End Sub
Vậy thì viết code cho sheet1 như sau:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$C$2" Then
    [COLOR=Red][B]Sheet2[/B][/COLOR].PivotTables("PivotTable1").PivotFields("[COLOR=Blue][B]THÁNG[/B][/COLOR]").CurrentPage = [B][COLOR=Red]Target.Value[/COLOR][/B]
  End If
End Sub
Chú ý chổ màu đỏ chính là chổ mà ta đã tùy biến từ code gốc
Ngoài ra chứ ý 1 vụ quan trong ---> Chổ màu xanh là tiếng Việt có dấu ---> Coi chừng sẽ chẳng biết phải ghi thế nào (ví dụ PivotFields("ÔNG NỘI") ...)
 
Lần chỉnh sửa cuối:
Upvote 0
Code tự động Enable Macro

Chào các anh/chị
Mình đang cần code: mà khi mở file excel, tự động enable macro để khi mình gửi file có macro cho Sếp mà Sếp không phải Enable Macro. Anh/Chị nào biết chỉ dùm mình với. Mình tìm mãi không ra. Cám ơn rất nhiều
 
Upvote 0
Nhờ giải thích giùm ý nghĩa đoạn code !
chào các pác!!
em chỉ mới tìm hiểu về vb nên có một số đoạn code cũng như ý nghĩa của nó cũng chưa hiểu lắm mong các pác chỉ giáo thêm cho em
1) .CurrentRegion.Resize(, 1).SpecialCells(2, 1).Value = Evaluate("ROW(R:R)")
2) m = S02.Range("C65000").End(xlUp).Row
Range("B6:C" & m).Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

ý nghĩa từng đoạn code ?, ý nghĩa (nếu càng chi tiết thì càng ok ) của câu lệnh được tô đậm
thanks các pác nhìu!!!!!!!!
 
Upvote 0
Nhờ giải thích giùm ý nghĩa đoạn code !

chào các pác!!
em chỉ mới tìm hiểu về vb nên có một số đoạn code cũng như ý nghĩa của nó cũng chưa hiểu lắm mong các pác chỉ giáo thêm cho em
1) .CurrentRegion.Resize(, 1).SpecialCells(2, 1).Value = Evaluate("ROW(R:R)")
2) m = S02.Range("C65000").End(xlUp).Row
Range("B6:C" & m).Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

ý nghĩa từng đoạn code ?, ý nghĩa (nếu càng chi tiết thì càng ok ) của câu lệnh được tô đậm
thanks các pác nhìu!!!!!!!!
 
Upvote 0
cho mình hỏi các bạn tí nhé:
tại sao mình viết đoạn code đếm những ô kiểu bold (in đậm) thì được mà đếm kiểu underline (gạch chân) thì không được.
Xin chỉ giùm với
PHP:
Sub NoBold()
Dim lcolumn As Long, cot As Long, i As Long, t As Byte
lcolumn = 4
t = 0
cot = 1
Do While cot <= lcolumn
Do While Cells(1, cot).Font.underline = True {nếu thay underline bằng bold thì đếm được)
t = t + 1
cot = cot + 1
Loop
cot = cot + 1
If cot > lcolumn Then Exit Do
Loop
Cells(1, cot) = t
End Sub

Đây là đoạn code đếm số ô gạch chân trong excel
Nếu thay kiểu underline (gạch chân) bằng kiểu bold (in đậm) thì đếm được. Nhưng đếm kiểu underline thì lại không được
mong mọi người chỉ giùm

PHP:
Sub NoBold()
 Dim lcolumn As Long, cot As Long, i As Long, t As Byte
 lcolumn = 4
 t = 0
 cot = 1
  Do While cot <= lcolumn
    Do While Cells(1, cot).Font.underline = True
        t = t + 1
        cot = cot + 1
    Loop
    cot = cot + 1
    If cot > lcolumn Then Exit Do
 Loop
 Cells(1, cot) = t
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Đây là đoạn code đếm số ô gạch chân trong excel
Nếu thay kiểu underline (gạch chân) bằng kiểu bold (in đậm) thì đếm được. Nhưng đếm kiểu underline thì lại không được
mong mọi người chỉ giùm

Sub NoBold()
Dim lcolumn As Long, cot As Long, i As Long, t As Byte
lcolumn = 4
t = 0
cot = 1
Do While cot <= lcolumn
Do While Cells(1, cot).Font.underline = True
t = t + 1
cot = cot + 1
Loop
cot = cot + 1
If cot > lcolumn Then Exit Do
Loop
Cells(1, cot) = t
End Sub
Thử thay:
Do While Cells(1, cot).Font.underline = True
Bằng
Do While Cells(1, cot).Font.Underline = xlUnderlineStyleSingle
Tùy thuộc vào định dạng "thằng" gạch chân (xlUnderlineStyleSingle, xlUnderlineStyleDouble .....)
 
Upvote 0
cho mình hỏi các bạn tí nhé:
tại sao mình viết đoạn code đếm những ô kiểu bold (in đậm) thì được mà đếm kiểu underline (gạch chân) thì không được.
Xin chỉ giùm với
Code của bạn sao dài dòng thế nhỉ? Sao không For Each... Next cho nó khỏe
Kiểu vầy nè:
PHP:
Function CountUnderline(sRange As Range) As Long
  Dim Clls As Range
  Application.Volatile
  For Each Clls In sRange
    If Clls.Font.Underline > -4142 Then _
      CountUnderline = CountUnderline + 1
  Next
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ sữa giùm mình code của ví dụ sau

khi mình search tên chi nhánh / nhân viên ở ô E 5 của sheet CongNo thì nó chỉ ra được dữ liệu được nhập lần đầu tiên (những dòng đầu) ở sheet da ta thì nó ra đúng. nhưng nếu nhập dữ liệu tiếp theo cho sheet da ta ở những dòng tiếp theo với 1 tên chi nhánh/ nhân viên khác thì nó ko ra .
Mình ko biết code sai ở chổ nào , mình nghỉ nó bị giới hạn số dòng nhưng mình đã sữa vẫn không được .
Mong các cao nhân chỉ ra chổ sai giùm (mình đang học VBA chập chững nên còn gà lắm )
thanks!!1
SORY MÌNH POST LỘN BÀI , CÁC BẠN VÀO FILE CongNo-Ver03-3.rar NHA
GIÚP GIÙM LẦN NỮA
THANKS
 

File đính kèm

  • CongNo-Ver03-2.rar
    102.3 KB · Đọc: 20
  • CongNo-Ver03-3.rar
    27.1 KB · Đọc: 12
Lần chỉnh sửa cuối:
Upvote 0
Xin các bạn viết dùm code loc dữ liệu từ nhật ký chung sang sổ cái tài khoản. Chân Thành cảm ơn
 
Upvote 0
Xin mọi người giúp đỡ về lỗi code này
Recordset.Sort = "ID"
Thông báo lỗi:
Run-time error '3251':
Current provider does not support the necessary interfaces for sorting or filtering

Mình đang viết một đoạn code trong excel có làm việc với dữ liệu mdb. Nhưng khi tạo một Recordset xong và muốn sort thứ tự thì không được.
Provider đã khai báo là:
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
hoặc là:
Cnct = "Driver={Microsoft Access Driver (*.mdb)}; " & _
"Dbq=" & DBFullName
Connection.Open Cnct
cả hai cái này cũng đều không được. Trong reference đã để là Microsoft ActiveX data objects 2.5 library rồi
 
Upvote 0
Các bạn ơi!
Giúp mình chút với
Mình muốn học về macro mà không sao hiểu được.Mình không biết đọc và hiểu ý nghĩa của code như thế nào.Nó mơ hồ quá.Bạn nào có thể giúp mình không?
Cảm ơn rất nhiều!
 
Upvote 0
Các bác giúp em với, em đang làm cái shortcut đơn giản cho cái lệnh làm Autofit độ dài của Column, nhưng chỉ Autofit cho cái cột mà em đang làm việc thôi, sử dụng chức năng record macro thì nó cho như sau:

Mã:
Sub Auto_fit_column()
'
' Auto_fit_column Macro
' Auto fit column
'
' Keyboard Shortcut: Ctrl+Shift+L
'
    Columns("A:A").EntireColumn.AutoFit
End Sub

Bác nào giúp em sửa lệnh sao cho nó chỉ Autofit đúng cái dòng của Cell mà mình đang chọn thôi.

Cám ơn các bác nhiều.
 
Upvote 0
Các bác giúp em với, em đang làm cái shortcut đơn giản cho cái lệnh làm Autofit độ dài của Column, nhưng chỉ Autofit cho cái cột mà em đang làm việc thôi, sử dụng chức năng record macro thì nó cho như sau:

Mã:
Sub Auto_fit_column()
'
' Auto_fit_column Macro
' Auto fit column
'
' Keyboard Shortcut: Ctrl+Shift+L
'
    [COLOR=Red]Columns("A:A")[/COLOR].EntireColumn.AutoFit
End Sub
Bác nào giúp em sửa lệnh sao cho nó chỉ Autofit đúng cái dòng của Cell mà mình đang chọn thôi.

Cám ơn các bác nhiều.
Bạn chỉnh cái đỏ đỏ ở trên nhé. Đó là cột A

ActiveCell.EntireColumn.AutoFit
 
Lần chỉnh sửa cuối:
Upvote 0
Sửa dùm em đoạn code sai

A/C vui lòng sửa dùm em code sai sao cho nhập liệu được nhé!

PHP:
Private Sub CommandButton1_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("DATA")
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    If Trim(Me.TextBox2.Value) = "" Then
        Me.TextBox2.SetFocus
        MsgBox "Ho va ten khong duoc bo trong", vbCiritial + vbOKOnly
    Exit Sub
    End If
ws.Cells(iRow, 1).Value = Me.TextBox1.Value '' Dòng này sai chỗ nào?
ws.Cells(iRow, 2).Value = Me.TextBox2.Value
ws.Cells(iRow, 3).Value = Me.TextBox3.Value
ws.Cells(iRow, 4).Value = Me.TextBox4.Value
Me.TextBox1.Value = ""
Me.TextBox2.Value = ""
Me.TextBox3.Value = ""
Me.TextBox4.Value = ""
End Sub

Cám ơn A/C nhiều!
 

File đính kèm

  • GPE.rar
    10.9 KB · Đọc: 21
Upvote 0
Dòng đó không sai chổ nào hết!

Bạn sai ở dòng trên; Nhưng nó đễu với bạn nên đến khi bạn đem cái biến đã gán sai kiểu dữ liệu nó mới báo là sai

BG đễu thật!

PHP:
 iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)'.Row'
 
Upvote 0
Em dùng record macro để tạo phím tắt tăng kích thước chữ (bằng cách ấn vào Increase Font Size button ở Tab Home).
Thay vì ấn Alt_H + FG thì ấn Ctrl + Shirt + M thì thu được code như sau:
Mã:
Sub Increase_size()
'
' Increase_size Macro
' Increase font size
'
' Keyboard Shortcut: Ctrl+Shift+M
'
    Selection.Font.Size = 11
End Sub
Các bác thấy đó, nó lại chọn font là 11. Bác nào giúp em sửa code này cho nó thành tăng kích thước font với.
Tiện thể cho em thêm code để giảm kích thước font luôn càng tốt ạ.
Cám ơn các bác
 
Lần chỉnh sửa cuối:
Upvote 0
Mình có đoạn code trên bản excel gốc để tìm lọc dữ liệu ở sheet1 xuất sang sheet2 nhưng với số liệu ở sheet1 chỉ có từ A1:CW100! Nay mình muốn sửa lại đoạn code để có thể kiểm tra ở sheet1 với số liệu nhập nhiều hơn là A1:IV11344, nhưng mình sửa nhiều kiểu mà không ra! Rất mong GPE giúp hộ mình! Mình xin gửi kèm theo 2 File excel: 1 file gốc: số liệu ở sheet1 chỉ có trong vùng A1:CW100 và 1 file coppy mình đã nhập sẵn số liệu minh hoạ với số liệu ở sheet1 là A1:IV11344 và điều kiện tìm kết quả giống hệt như phần file gốc cũng xuất sang sheet2!
Xin chân thành cảm ơn mọi người!

Đây là đoạn mã code của bản gốc:
Dim Mang(1000, 1000) As Boolean
Sub Doc_Mang()
Dim i As Integer, j As Integer
For i = 1 To 100
For j = 1 To 100
Mang(i, j) = False
If Sheet1.Cells(i, j + 1) <> "" Then Mang(i, j) = True
Next
Next

j = 5
For i = 10000 To 5 Step -1
If Sheet2.Cells(i, 1) <> "" Then
j = i
Exit For
End If
Next
Sheet2.Range("A1:IV1").Copy
For j = 5 To i
Sheet2.Range("A" & j & ":IV" & j).PasteSpecial (xlPasteAll)
Next
End Sub
Function fKiemTra(i, j As Integer) As Boolean
Dim k As Integer
Dim KQ As Boolean
k = 1
KQ = True
Do While k < 100
If (Mang(i, k) = False) And (Mang(i, k + 1) = False) And (Mang(j, k) = False) And (Mang(j, k + 1) = False) Then
KQ = False
Exit Do
End If
k = k + 2
Loop
'MsgBox i & " - " & j & ":" & k
fKiemTra = KQ
End Function
Sub Tim_kiem()
Dim i As Integer, j As Integer
Dim TT As Integer, SR As String
Doc_Mang

TT = 5
For i = 1 To 99
For j = i + 1 To 100
If fKiemTra(i, j) = True Then
SR = "A" & i & ":CW" & i
Sheet1.Range(SR).Copy
SR = "A" & TT & ":CW" & TT
Sheet2.Range(SR).PasteSpecial (xlPasteAll)
TT = TT + 1

SR = "A" & j & ":CW" & j
Sheet1.Range(SR).Copy
SR = "A" & TT & ":CW" & TT
Sheet2.Range(SR).PasteSpecial (xlPasteAll)
TT = TT + 2
End If
Next
Next
End Sub
 

File đính kèm

  • TH_NG k_goc.rar
    30.1 KB · Đọc: 17
  • Copy of TH_NG K_.rar
    484.1 KB · Đọc: 69
Lần chỉnh sửa cuối:
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom