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:
Chào các anh chị em trong diễn đan GPE, e có file excel này muốn nhờ ac viết giúp cho e 1 code.
Ở cột C hàng thứ 9 trở đi, khi muốn gõ đúng mã hiệu như sheet DongiaTTH (ví dụ:CO.01102) thì tại các cột C,D,F,G và H sẽ lọc số liệu tương ứng từ sheet DongiaTTH với mã hiệu đã chọn và past vào các cột đã nói ở trên. Còn nếu gõ không đúng mã hiệu hoặc click phải vào cột C hàng thứ 9 thì xuất hiện một useform và trong useform sẽ xuất hiện các số liệu như sheet DongiaTTH và lúc đó ta có thể xem hoặc click các mã hiệu rồi chọn thì các số liệu đó tự động past vào sheet chi tiết. code này giống như code của phần mềm dự toán vậy. em xin cám ơn
 

File đính kèm

  • VD.rar
    97 KB · Đọc: 1
Lần chỉnh sửa cuối:
Upvote 0
Nhờ mọi người sửa giúp đoạn code sau.

Nhờ anh em trong diễn đàn xem thử kg biết bị sao mà nó lại báo lỗi. Tuy có chạy được theo yêu cầu định dạng như kg biết nó lại bị Debug. ||||| Nhờ anh em sửa lại giúp.
Mã:
Sub DinhDangOChu()
    Dim i, x, a, b As Integer
    Dim lastrow As Long
    lastrow = ActiveCell.End(xlDown).Row
    a = ActiveCell.Row
    b = ActiveCell.Column
    For i = 0 To lastrow - 1
    Cells(a, b).Offset(i, 5) = "=SEARCH(CHAR(10),R[0]C[-5])"
    x = ActiveCell.Offset(i, 5)
    With Cells(a, b).Offset(i, 0).Characters(Start:=1, Length:=x).Font
        .Name = "Times New Roman"
        .FontStyle = "Bold"
    End With
    With Cells(a, b).Offset(i, 0).Characters(Start:=x, Length:=999).Font
        .Name = "Arial"
        .FontStyle = "Italic"
    End With
    Next i
End Sub
 

File đính kèm

  • DinhDangOChu.xls
    38.5 KB · Đọc: 10
Upvote 0
Bạn sai ở đây

For i = 0 To lastrow - 1

Phải là

For i = 0 To lastrow - a


vì bạn xác định vượt vùng dữ liệu nên code bị lỗi khi chạy vào ô trống . Cũng nên On error Resume Next vào đầu Code vì nếu không có thì trong vùng có 1 ô nào đó trống cũng tèo.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn rất nhiều đã giúp. Mình chạy được code trên rồi. Bạn cho mình hỏi thêm "On error Resume Next" là sao vậy bạn ? có cách nào để nó "trượt" nhanh hơn kg ?
Có cách nào để nếu mình click vào ô trống hay ô kg có kí tự Char(10) thì code kg chạy kg ? Vì khi click vào mình thấy nó chạy rất lâu và chạy hết bảng tính luôn.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn rất nhiều đã giúp. Mình chạy được code trên rồi. Bạn cho mình hỏi thêm "On error Resume Next" là sao vậy bạn ? có cách nào để nó "trượt" nhanh hơn kg ?
Có cách nào để nếu mình click vào ô trống hay ô kg có kí tự Char(10) thì code kg chạy kg ? Vì khi click vào mình thấy nó chạy rất lâu và chạy hết bảng tính luôn.
Thử chạy code này xem:
PHP:
Sub DinhDangOChu2()
Application.ScreenUpdating = False
Dim Rng As Range, Cll As Range, Tem As Long
Set Rng = Range(ActiveCell, Cells(65000, ActiveCell.Column).End(xlUp))
For Each Cll In Rng
If Cll.Value <> vbNullString Then
    Tem = InStr(1, Cll, Chr(10), 1)
    With Cll.Characters(Start:=1, Length:=Tem - 1).Font
        .Name = "Times New Roman"
        .FontStyle = "Bold"
    End With
    With Cll.Characters(Start:=Tem + 1, Length:=200).Font
        .Name = "Arial"
        .FontStyle = "Italic"
    End With
End If
Next
Set Rng = Nothing
Application.ScreenUpdating = False
End Sub
 
Upvote 0
Cảm ơn bạn Ba tê, đúng là qua mảng nó chạy nhanh hơn hẳn. Thanks bạn rất nhiều.
 
Upvote 0
Chào ACE diễn đàn GPE!
Mình cần một đoạn CODE VBA để tự động tổng hợp dữ liệu từ nhiều File excel trong cùng một Foder, yêu cầu của bài tập là:
File tổng hợp sẽ tự động tổng hợp dữ liệu của tất cả các file có trong một Foder (số lượng file trong foder này không bị giới hạn và không biết trước sẽ có bao nhiêu file) dữ liệu được tổng hợp theo từng CELL của từng Sheet tương ứng.
Mình đã tham khảo bài viết của bác @anhtuan1066 ở đây http://www.giaiphapexcel.com/forum/showthread.php?7146-Đố-vui-về-VBA!&p=253055#post253055 để viết CODE nhưng nó chỉ lấy dữ liệu được từ 1file,
Nhờ các bạn xem và chỉnh sửa CODE để có thể thực hiện bài tập ah. Vui lòng xem file đính kèm.
Để CODE thực thi trên file (tất cả các Sheet của file tổng hợp đều được tổng hợp dữ liệu) thì phải chỉnh sửa ntn ah?
 

File đính kèm

  • TonghopBCTK.rar
    809.2 KB · Đọc: 5
Upvote 0
nhờ mấy a giải thik dùm e cái code này.code này viết để điều khiển mạch quang báo led ma trận dùng AT 89s52.code này là code asm.

Đây là diễn đàn Excel mà bạn
Ở đây chuyên về VBA và Visual Basic, bạn hỏi cái gì đâu có phải là "lộn tiệm" không?
 
Upvote 0
Upvote 0
ĐÂY LÀ MỘT ĐOẠN CODE MÌNH THAM KHẢO TỪ FILE TRÊN DIỄN ĐÀN VÀ THAY ĐỔI CHÚT THÔI
Là một đoạn code để mình nhập hồ sơ khách mua hàng, có 3 cột nhập là Tên - Địa chỉ - Thông tin
Private Sub CommandButton1_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Then
MsgBox "Your information is insufficient", , "ATTENTION !"
Exit Sub
End If
'find first empty row in database
iRow = ws.Cells(Rows.Count, 2) _
.End(xlUp).Offset(1, 0).Row
'copy the data to the database
ws.Cells(iRow, 2).Value = Me.TextBox1.Value
ws.Cells(iRow, 4).Value = Me.TextBox2.Value
ws.Cells(iRow, 6).Value = Me.TextBox3.Value
'clear the data
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
Me.TextBox1.SetFocus
End Sub

Thật ra mình chẳng biết tẹo gì về VBA, nhìn rồi đoán thôi, cái (IRow,4)..(IRow,2) thì hiểu đó là cột tương ứng từ A,B,C....
Nhưng ''CÁI SỐ 2'' kia thì mình cứ thay đổi linh tinh cả. Không biết xác định thế nào để thông tin nhập vào
rơi đúng dòng đầu tiên sau tiêu đề mình cần.
Các bạn giúp với!. hix
 
Upvote 0
Mình có bài toán yêu cầu như thế này. Cột A nhập dữ liệu thì cột B hàng tương ứng hiển thị thời gian nhập dữ liệu của cột A. Giả sử ô A2 nhập dữ liệu thì ô B2 hiển thị thời gian nhập cô A2, sau đó ô B2 tự động khóa lại không cho người dùng tác động điều chỉnh. Khi ô A2 được nhập dữ liệu mới thì ô B2 tự động mở ra và hiển thị thời gian nhập số liệu tương ứng rồi lại khóa lại.
Mình mới có code cho hiển thị thời gian, chưa có code cho trạng thái khóa và mở khóa cho Ô B2 như trên, các bác có cao kiến gì giúp đỡ em vs.
code của em như sau:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
If Intersect(Target, [A1:A10]) Is Nothing Then Exit Sub
For Each Cll In Intersect(Target, [A1:A10])
If Cll <> "" Then
If Cll <> Cll.ID Then
Cll.Offset(, 1) = Format(Now, "hh:mm AM/PM")
Cll.ID = Cll
End If
Else
Cll.Offset(, 1).ClearContents
Cll.ID = ""
End If
Next
End Sub
 
Upvote 0
Đây là diễn đàn Excel mà bạn
Ở đây chuyên về VBA và Visual Basic, bạn hỏi cái gì đâu có phải là "lộn tiệm" không?

Nhờ các anh chị giải thích code của hàm sau với:

Private Declare Function GetMeID Lib "excelqt.dll" (ByVal RT As String) As Integer
Declare Function GetActiveWindow Lib "user32" () As Long

Function ThongtinKTXD(ByVal ODIA As String, SOHDDSR As Integer) As String
Dim Serial As String
Dim ret As Integer
Serial = Space$(256)
ret = GetMeID(Serial)
If SOHDDSR = 13971 Then
ThongtinKTXD = Serial
ThongtinKTXD = Trim(ThongtinKTXD)
Else
ThongtinKTXD = ""
End If
End Function

Function NumberWindow() As Long
Dim NumberWND As Long
NumberWindow = GetActiveWindow()
End Function
 
Upvote 0
Hỏi lại bạn hàm này
Mã:
Private Declare Function GetMeID Lib "excelqt.dll" (ByVal RT As String) As Integer

Ở đâu ra vậy?
 
Upvote 0
Em copy trong 1 modul và em ko biết nó làm việc như thế nào, anh giúp em với được ko?

Tôi đoán đến 99% rằng hàm này do ai đó tạo ra từ VB6 và đóng gói thành DLL (file excelqt.dll) để dùng trên Excel
Vậy nếu chưa cài đặt chương trình để có file excelqt.dll thì làm sao mà test đây?
Mà nè, tự nhiên copy module của người ta về test chơi vậy sao? Ít ra bạn cũng phải biết code ấy dùng vào việc gì chứ?
 
Upvote 0
cho em hỏi với, nếu khi cài đặt thì file này nó nằm trong system phải không anh? em đang tìm hiểu cách làm HWID như 1 đề tài em có hỏi trên diễn đàn. Nếu đúng vậy thì em có tìm được trên google 1 bộ form tạo HWID từ VB6. có gì anh chỉ giúp em với nha. Thanks anh ndu96081631 nhiều
 
Upvote 0
Chỉ giúp cho sai dòng code VBA ( lính mới)

Public Function tong(sobachu As Long)
Dim a As Long, b As Long, c As Long
c = sobachu Mod 10
b = sobachu Mod 100 - c
a = (sobachu - b * 10 - c) / 100
tong = a + b + c
End Function

Đề bài là: Viết hàm nhận 1 số nguyên dương có 3 chữ số, tính tổng của 3 chữ số đó. Mình đã viết nhủ trên nhưng chạy thử với số 456 sai.( kết quả đúng 15 lại ra 56). Thank!
 
Upvote 0
Bạn thử với hàm này & sau đó đối chiếu:

Mã:
[B]Function Tong3So(ABC As Long)
[/B] Tong3So = ABC \ 100 + (ABC \ 10 Mod 10) + (ABC Mod 10)
[B]End Function[/B]
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom