tuananhya2
Thành viên mới

- Tham gia
- 18/8/12
- Bài viết
- 8
- Được thích
- 0
Co ai chỉ dùm cách tạo pass marco với
Cảm ơn bạn nhưng cho mình hởi thêm là: Cái commandbutton khi insert lên trang tính thì làm sao để nó hoạt động?
Cái button khi insert lên trang tính mình đã biết cách dùng ghi macro và có thể xây dựng code. Lại giúp mình nữa nhé!
Private Sub CommandButton1_Click()
End Sub
Mình cần giúp đỡ viết code xóa những hàng không có dữ liệu như file đính kèm.
Xin các cao thủ giúp đỡ
Sub xoa()
Dim i As Long
For i = [G65536].End(3).Row To 4 Step -1
If Cells(i, 7).Value = "" Then
Cells(i, 7).EntireRow.Delete
End If
Next
End Sub
Làm một phát luôn, khỏi lặp nè bé Còi:Mã:Sub xoa() Dim i As Long For i = [G65536].End(3).Row To 4 Step -1 If Cells(i, 7).Value = "" Then Cells(i, 7).EntireRow.Delete End If Next End Sub
If ((Target.Column = 28) Or (Target.Column = 31) Or (Target.Column = 36) Or _
(Target.Column = 41) Or (Target.Column = 44) Or (Target.Column = 47) Or _
(Target.Column = 52) Or (Target.Column = 57)) Then
Dim Matrix_1(i) as double
Bạn chỉ cầnCác anh cho em hỏi.
Em cần khai báo mảng. Nhưng không biết trước kích thước của mảng. Em khai báo thế này thì nó báo lỗi ở cái "i". i là một biến được em tính toán trong code.
Vậy cho em hỏi làm thế nào để khai báo mảng này. Và gán giá trị cho mảng như thế nào.Mã:Dim Matrix_1(i) as double
Ví dụ em cần gán Matrix_1(i-1) thì gán thế nào,
Các anh cho em hỏi.
Em cần khai báo mảng. Nhưng không biết trước kích thước của mảng. Em khai báo thế này thì nó báo lỗi ở cái "i". i là một biến được em tính toán trong code.
Vậy cho em hỏi làm thế nào để khai báo mảng này. Và gán giá trị cho mảng như thế nào.Mã:Dim Matrix_1(i) as double
Ví dụ em cần gán Matrix_1(i-1) thì gán thế nào,
Sub test()
Dim TestArray() As Double
i = 20
ReDim TestArray(1 To i) As Double
End Sub
Khi khai báo mảng, nếu ta biết chắc chắn kích thước của nó bao nhiêu thì điền vào luôn, chẳng hạn:
Dim Matrix_1(0 to 9) as double
Lưu ý: Ta phải đảm bảo mảng có bao nhiêu phần tử và chạy từ đâu đến đâu, viết như trên ta thấy được mảng có 10 phần tử, chạy từ 0 đến 9. Nếu ta viết:
Dim Matrix_1(9) as double, thì mảng vẫn chứa 10 phần tử, nhưng mặc định của nó là từ 0 đến 9.
Nhưng ta muốn phần tử đầu tiên, bắt đầu từ 1 thì ta làm như sau:
Dim Matrix_1(1 to 10) as double
---------------------------------------------------
Khi ta không chắc mảng có bao nhiêu phần tử thì bắt buộc ta phải ReDim, cách làm như sau:
Mã:Sub test() Dim TestArray() As Double i = 20 ReDim TestArray(1 To i) As Double End Sub
Cái này em hiểu rồi nhưng còn vấn đề nữa là khi em gán giá trị ví dụ như:
Matrix_1(i) = 120
thì không được. Vậy khi muốn gán giá trị mà chưa biết trước phần tử thì phải làm thế nào
Sub Test()
Dim MyRange As Range, MyArray() As Double, _
EndRow As Long, RowsCount As Long, i As Long
[COLOR=#0000ff] ''Xac dinh so hang cuoi cung co du lieu cua cot A:[/COLOR]
EndRow = Sheet1.Range("A65536").End(xlUp).Row
[COLOR=#0000ff] ''Dat bien Range cho vung:[/COLOR]
Set MyRange = Sheet1.Range("A1:A" & EndRow)
[COLOR=#0000ff] ''Xac dinh tong so hang cua vung:[/COLOR]
RowsCount = MyRange.Rows.Count
[COLOR=#0000ff] ''Dat lai bien cho Array:[/COLOR]
ReDim MyArray(1 To RowsCount) As Double
[COLOR=#0000ff] ''Gan gia tri cho tung phan tu cua mang:[/COLOR]
For i = 1 To RowsCount
[COLOR=#ff0000] MyArray(i) = MyRange(i)[/COLOR]
[COLOR=#0000ff] ''Xem ket qua:[/COLOR]
MsgBox MyArray(i)
Next
End Sub
Như vầy nha, bạn có Sheet1, tại cột A, từ A1 đến A5 bạn gõ lần lượt từ 1 đến 5 (thử nghiệm nên cho vài phần tử thôi hen).
Và code của bạn sẽ như sau:
Mã:Sub Test() Dim MyRange As Range, MyArray() As Double, _ EndRow As Long, RowsCount As Long, i As Long [COLOR=#0000ff] ''Xac dinh so hang cuoi cung co du lieu cua cot A:[/COLOR] EndRow = Sheet1.Range("A65536").End(xlUp).Row [COLOR=#0000ff] ''Dat bien Range cho vung:[/COLOR] Set MyRange = Sheet1.Range("A1:A" & EndRow) [COLOR=#0000ff] ''Xac dinh tong so hang cua vung:[/COLOR] RowsCount = MyRange.Rows.Count [COLOR=#0000ff] ''Dat lai bien cho Array:[/COLOR] ReDim MyArray(1 To RowsCount) As Double [COLOR=#0000ff] ''Gan gia tri cho tung phan tu cua mang:[/COLOR] For i = 1 To RowsCount [COLOR=#ff0000] MyArray(i) = MyRange(i)[/COLOR] [COLOR=#0000ff] ''Xem ket qua:[/COLOR] MsgBox MyArray(i) Next End Sub
Tôi nghĩ sau khi xem code và làm thực tế bạn sẽ hiểu cách gán giá trị cho từng phần tử trong mảng.
Cả 1 trời kiến thức bên trong mấy dòng lệnh sao mà dịch ra hết được.các anh chị dịch hộ em đoạn code sau có ý nghĩa như nào với :
Do Until Selection.Offset(0, 2) = ""
Set X = Selection
Set sRng = Rng.Find(X, , xlFormulas, xlWhole)
Selection.Offset(1, 0).Select
'If sRng Is Nothing Or sRng(2, 2) = "" Then
'Selection.Offset(-1, 0).Font.ColorIndex = 3
'Else
'If sRng(3, 2) = "" Then sRng(2, 2).EntireRow.Copy
'If sRng(3, 2) <> "" Then Range(sRng(2, 2), sRng(2, 2).End(xlDown)).EntireRow.Copy
'Selection.Insert Shift:=xlDown
'Selection.End(xlDown).Select
'End If
thank!
Sub Do_Example()
Dim m As Long
Do
m = m + 1
MsgBox m
If m > 10 Then Exit Do
Loop
End Sub
Sub Do_While_Loop_Example()
Dim i As Long
i = 1
Do While i <= 10
Cells(i, 1) = i
i = i + 1
MsgBox i
Loop
End Sub
Sub Do_Loop_While_Example()
Dim i As Long
i = 1
Do
Cells(i, 3) = i
i = i + 1
MsgBox i
Loop While i <= 10
End Sub
Sub Do_Until_Loop_Example()
Dim i As Long
i = 1
Do Until i = 10
Cells(i, 5) = i
i = i + 1
MsgBox i
Loop
End Sub
Cứ chạy thử từng dòng lệnh và xem kết quả ở bảng tính thì biết dòng nào có ý nghĩa gìthế anh gt hộ em mấy dòng này
'If sRng(3, 2) = "" Then sRng(2, 2).EntireRow.Copy
'If sRng(3, 2) <> "" Then Range(sRng(2, 2), sRng(2, 2).End(xlDown)).EntireRow.Copy
'Selection.Insert Shift:=xlDown
'Selection.End(xlDown).Select
thế anh ơi, sRng(3,2) ở đây (3,2) là số dòng,và số cột của mảng ah
mới lại cấu trúc <> "" Then Range(sRng(2, 2), sRng(2, 2).End(xlDown)).EntireRow.Copy nghĩa là j
end(xldown),end(xlup) là j
Selection.Insert Shift:=xlDown dòng này nghĩa là j
anh gt hộ em cái,