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ác ơi em có đoạn code sau :
PHP:
Private Sub CommandButton1_Click()
Dim i As Long
    i = 3
    Do While Range("A" & i + 1).Value <> ""
    i = i + 1
    Loop
    Range(" " A " & i : " E " & i").Select
End Sub
Chạy không được, các bác sửa lại dùm em với nhé, em chả biết sai như thế nào để mà sửa
Cái này sao phải cần vòng lập?
Nếu bạn chỉ muốn "tập dợt" code thì sửa theo ThuNghi... Còn như muốn xài thật sự thì phải thế này:
PHP:
Private Sub CommandButton1_Click()
  [A3].End(xlDown).Resize(, 5).Select
End Sub
Mới gọn chứ
 
Upvote 0
Cái này sao phải cần vòng lập?
Nếu bạn chỉ muốn "tập dợt" code thì sửa theo ThuNghi... Còn như muốn xài thật sự thì phải thế này:
PHP:
Private Sub CommandButton1_Click()
  [A3].End(xlDown).Resize(, 5).Select
End Sub
Mới gọn chứ
Bác giải thích hộ em câu lệnh
[A3].End(xlDown).Resize(, 5).Select
Với
 
Upvote 0
Bác giải thích hộ em câu lệnh
[A3].End(xlDown).Resize(, 5).Select
Với
Đơn giản:
[A3].End(xlDown) giống như việc bạn chọn A3 rồi bấm Ctrl + mũi tên xuống ---> nó sẽ di chuyển đến dòng cuối cùng có dử liệu
Thêm .Resize(, 5) nghĩa là sau khi bấm Ctrl + mũi tên xuống xong, tại cell mới này ta mở rộng nó ra 5 cột
Cú pháp của Resize
Resize(Số dòng, Số cột)
Ở đây số dòng để trống xem như mặc định = 0 (tức không mở rộng dòng)
Xem thông tin chi tiết về Resize tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=13005
 
Upvote 0
Mình có 2 bảng Nhập-Xuất -Tồn tháng 3 và bảng kê nhập tháng 4, mã số các mặt hàng giống nhau, nhưng trình tự khác nhau, làm thế nào để tìm ra những mã mới trong bảng kê nhập?
 
Upvote 0
Đơn giản:
[A3].End(xlDown) giống như việc bạn chọn A3 rồi bấm Ctrl + mũi tên xuống ---> nó sẽ di chuyển đến dòng cuối cùng có dử liệu
Thêm .Resize(, 5) nghĩa là sau khi bấm Ctrl + mũi tên xuống xong, tại cell mới này ta mở rộng nó ra 5 cột
Cú pháp của Resize
Ở đây số dòng để trống xem như mặc định = 0 (tức không mở rộng dòng)
Xem thông tin chi tiết về Resize tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=13005
Àh, thế làm sao để viết dữ liệu vào hàng tiếp theo của hàng cuối cùng có dữ liệu hả bác?
 
Upvote 0
Àh, thế làm sao để viết dữ liệu vào hàng tiếp theo của hàng cuối cùng có dữ liệu hả bác?
Đoạn code này:

Mã:
Private Sub CommandButton1_Click()
  [A3].End(xlDown).Resize(, 5).Select
End Sub
là chọn dòng cuối có dử liệu, vậy dưới nó là rổng, đúng không?
Thế thì dùng OFFSET dịch chuyển nó 1 dòng nữa:

Mã:
Private Sub CommandButton1_Click()
   [A3].End(xlDown).Resize(, 5)[COLOR=Red][B].Offset(1)[/B][/COLOR].Select
 End Sub
Cú pháp Offset gần giống với Resize nhưng công dụng là để DỊCH CHUYỂN dòng, cột (chứ không phải mở rộng)
 
Upvote 0
Xin code tạo marco chỉnh 1 phần font chữ trong Cell thành chữ đậm

Tôi có 1500 ô chứa 1500 câu hỏi và đáp án
Xin chỉ cho tôi cách nhanh nhất để chỉnh font chữ các câu hỏi trong mỗi ô thàng chữ đậm mà câu trả lời thì vẫn là chữ thường.
Thanks
 
Upvote 0
Thủ tục xác định số hàng lớn nhất của dữ liệu?

Trong một sheet làm sao xác định được vị trí hàng lớn nhất của dữ liệu đã được nhập vào sheet? Ví dụ trong một sheet vị trí nhập dữ liệu có số hàng lớn nhất là ô A50 tôi cần thủ tục lấy được giá trị 50 này. Xin cảm ơn nhiều.
 
Upvote 0
Hình như bạn đang cần tìm cái này

Trong một sheet làm sao xác định được vị trí hàng lớn nhất của dữ liệu đã được nhập vào sheet? Ví dụ trong một sheet vị trí nhập dữ liệu có số hàng lớn nhất là ô A50 tôi cần thủ tục lấy được giá trị 50 này. Xin cảm ơn nhiều.
http://giaiphapexcel.com/forum/showthread.php?t=1641&highlight=lastrows#10
Lần sau tìm trước khi hỏi dùm cái, xin cảm ơn.
 
Upvote 0
Đoạn code này:

Mã:
Private Sub CommandButton1_Click()
  [A3].End(xlDown).Resize(, 5).Select
End Sub
là chọn dòng cuối có dử liệu, vậy dưới nó là rổng, đúng không?
Thế thì dùng OFFSET dịch chuyển nó 1 dòng nữa:

Mã:
Private Sub CommandButton1_Click()
   [A3].End(xlDown).Resize(, 5)[COLOR=Red][B].Offset(1)[/B][/COLOR].Select
 End Sub
Cú pháp Offset gần giống với Resize nhưng công dụng là để DỊCH CHUYỂN dòng, cột (chứ không phải mở rộng)

Cám ơn bác nhiều. Khi select được dòng có dữ liệu cuối cùng, làm sao để xác định đó là dòng thứ bao nhiêu hả bác?
 
Upvote 0
Thay chử Select thành Row ---> Sẽ ra được chỉ số dòng

Bác giúp em cái này với nhé.
e có 1 biến i mang giá trị i = Sheet1.Range("A65536").End(xlUp).Row
em muốn viết code cho 1 Scrollbar sao khi nhấp mũi tên phía trên thì i = i-1
con nhấp mũi tên xuống thì i=i+1
Bác viết hộ em được không ạ
 
Upvote 0
Bác giúp em cái này với nhé.
e có 1 biến i mang giá trị i = Sheet1.Range("A65536").End(xlUp).Row
em muốn viết code cho 1 Scrollbar sao khi nhấp mũi tên phía trên thì i = i-1
con nhấp mũi tên xuống thì i=i+1
Bác viết hộ em được không ạ
Viết cái này thì dể thôi! Nhưng sao bạn không đưa lên toàn bộ ý tưởng (để làm luôn 1 lần)
Ra được kết quả của i thì làm cái gì với nó chứ?
 
Upvote 0
Hic, kính mong các bác giảng hộ em bài vb sau đây, ông thầy của em suốt ngày chỉ biết viết code thôi
Mã:
Dim i As Integer    '(cái nì khai báo ở general)

Private Sub Form_Load()
txtmshs.Enabled = False
txthoten.Enabled = False
txtngaysinh.Enabled = False
End Sub
Mã:
Private Sub cmdinput_Click()
txtmshs.Enabled = True
txthoten.Enabled = True
txtngaysinh.Enabled = True
txtmshs = ""
txthoten = ""
txtngaysinh = ""
txtmshs.SetFocus
End Sub
Mã:
Private Sub khoidong()
For i = 1 To 100
If danhsach(i).mshs <> 0 Then
    List1.AddItem danhsach(i).hoten
    List1.ItemData(List1.NewIndex) = danhsach(i).mshs
End If
Next i
End Sub
Mã:
Private Sub cmdsave_Click()
If txtmshs <> "" And txthoten <> "" Then
    For i = 1 To 100
        If danhsach(i).mshs = 0 Then
            danhsach(i).mshs = Val(txtmshs)
            danhsach(i).hoten = Trim(txthoten)
            danhsach(i).ngaysinh = Trim(txtngaysinh)
            Exit For
            End If
        Next i
        List1.Clear
        Call khoidong
    End If
End Sub
Mã:
Private Sub List1_Click()
Dim x
    x = List1.ItemData(List1.ListIndex)
    For i = 1 To 100
    If danhsach(i).mshs = x Then
        txtmshs = danhsach(i).mshs
        txthoten = danhsach(i).hoten
        txtngaysinh = danhsach(i).ngaysinh
    End If
Next i
End Sub
Mã:
Public Type hocsinh    '(cái nì khai báo ở mudule)
mshs As Integer
hoten As String
ngaysinh As String * 10
End Type
Public danhsach(100) As hocsinh
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
XIn các bác chỉ dẫn dùm cho mình vấn đề này:

Trong ổ D:\ của mình có các folder sau : vb1, vb2,.....
Bây giờ mình đánh văn bản mới nếu Cell A1 có chữ vb1 thì khi save nó save tự động vào d:\vb1. Tương tự với vb2
Với tên file là chuỗi bao gồm "tenvanban+ngaythangnam+giophutgiay.xls"
Mong các bác chỉ giáo!!!!
 
Upvote 0
Private Function Find_Address(Text As String, a As Boolean) As String
If a = True Then

Find_Address = Mid(Range(Text).Address, 2, WorksheetFunction.Find("$", Range(Text).Address, 2) - 2)
Else
Find_Address = Range(Text).Row
End If
End Function
Sub Tinh()
Dim col_NC As String, row_NC As String, col_i As String, row_i As String
col_NC = Find_Address("a", True)
row_NC = Find_Address("b", False) + 1
Sheet1.Range("A1").Value = col_NC
Sheet1.Range("A2").Value = row_NC
End Sub
Xin giải thích giùm đoạn code này, đặc biệt là ở chỗ này, và tham số boolean để làm gì?
Mid(Range(Text).Address, 2, WorksheetFunction.Find("$", Range(Text).Address, 2) - 2)
Mình có kèm theo file, xem hoài mà ko hiểu, mong các bạn giải thích hộ.
 

File đính kèm

  • a.xls
    26.5 KB · Đọc: 24
Upvote 0
Xin giải thích giùm đoạn code này, đặc biệt là ở chỗ này, và tham số boolean để làm gì?

Mình có kèm theo file, xem hoài mà ko hiểu, mong các bạn giải thích hộ.
Trong file bạn nói rằng:
Mục đích là xác định vị trí ô đầu tiên có số liệu để phục vụ việc tính toán.
nhưng tôi xóa tất tần tật dử liệu nó vẩn cho KQ = D8
Chả hiểu gì cả! Name a, b của bạn nhằm mục đích gì?
 
Upvote 0
Bác đọc code sẽ thấy dòng Find_Address("a", True) và bên Function thì nó sẽ là Find_Address = Mid(Range(a).Address, 2, WorksheetFunction.Find("$", Range(a).Address, 2) - 2) vậy thì a ở đây không phải là dữ liệu trong ô D7 mà là Name của ô D7 cơ.

Chì khóa của cách làm này là dựa vào việc đặt tên Name thôi.
Chúc vui!
Thân.
 
Upvote 0
Bác đọc code sẽ thấy dòng Find_Address("a", True) và bên Function thì nó sẽ là Find_Address = Mid(Range(a).Address, 2, WorksheetFunction.Find("$", Range(a).Address, 2) - 2) vậy thì a ở đây không phải là dữ liệu trong ô D7 mà là Name của ô D7 cơ.

Chì khóa của cách làm này là dựa vào việc đặt tên Name thôi.
Chúc vui!
Thân.
Ý mình là không hiểu đặt name để làm gì (name này cố định cơ mà)? Vì nếu nó xác định cell có dử liệu thì cần gì viết code nhiều thế ---> Goto đến nó luôn!
 
Upvote 0
Cái này chỉ có thể nói là người dùng chưa Pro thôi! Còn họ ứng dụng vào việc gì thì mình chịu luôn.
Cách này sẽ phải tốn rất nhiều name vô ích và còn làm nặng máy nữa. Để tìm địa chỉ ô đầu tiên của 1 khối thì có rất nhiều cách nhưng thường thì chúng ta thích làm trực tiếp luôn đâu cần phải dùng Name làm gì?
Vậy để tác giả cho ý kiến trước xem!
Thân.
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom