Heracles1976
Thành viên mới

- Tham gia
- 10/6/15
- Bài viết
- 35
- Được thích
- 7

Bạn dùng cái này thử:Các Bác giúp E trường hợp muốn gán dữ liệu vào 1 ô bằng cách chạy Macro thế nào với ạ, đơn giản mà không biết làm huhu...
Public Sub Chenthang()
Dim n As Integer
On Error GoTo Thoat
n = Application.InputBox("Nhap so thang: ")
Range("F4") = n
Thoat:
End Sub

Bạn dùng cái này thử:
Mã:Public Sub Chenthang() Dim n As Integer On Error GoTo Thoat n = Application.InputBox("Nhap so thang: ") Range("F4") = n Thoat: End Sub
Đơn giản?Được rồi Bác ạ, E cảm ơn Bác.. đơn giản quá!
Sub abc()
Dim a
a = InputBox("Xin moi nhap 1 so", "GPE", 1)
Range("F4").Value = a
End Sub

Đơn giản?
PHP:Sub abc() Dim a a = InputBox("Xin moi nhap 1 so", "GPE", 1) Range("F4").Value = a End Sub
Bạn thử:Cảm ơn Bác, cái này còn đơn giản hơn..
Tiện đây cho E hỏi thêm 1 cái macro xóa dòng trong bảng tính. VD: Khi chạy marco đó nó sẽ hỏi: "Bạn muốn xóa dòng số mấy: ", mình nhập số 8 vào thì nó xóa cả dòng số 8 trong bảng tính đó với ạ.
Sub Delet_abc()
Dim b As Long
b = InputBox("Xin moi nhap dong can xoa", "GPE", 1)
Range(Cells(b, 2), Cells(b, 3)).Delete Shift:=xlUp
End Sub

Bạn thử:
PHP:Sub Delet_abc() Dim b As Long b = InputBox("Xin moi nhap dong can xoa", "GPE", 1) Range(Cells(b, 2), Cells(b, 3)).Delete Shift:=xlUp End Sub

Ơ Bác ơi, cái này nó chỉ xóa 2 ô thôi ạ..?Bạn thử:
PHP:Sub Delet_abc() Dim b As Long b = InputBox("Xin moi nhap dong can xoa", "GPE", 1) Range(Cells(b, 2), Cells(b, 3)).Delete Shift:=xlUp End Sub
Bạn sửa thành như thế này xem được khôngƠ Bác ơi, cái này nó chỉ xóa 2 ô thôi ạ..?
Em muốn nó xóa cả dòng như kiểu mình bôi đen bằng Shift+Space rồi phải chuột chọn Delete cơ thì phải làm sao ạ
Sub Delet_abc()
Dim b As Long
b = InputBox("Xin moi nhap dong can xoa", "GPE", 1)
Cells(b, 1).EntireRow.Delete
End Sub
InputBox là phải bẫy lỗi (khi Cancel).Bạn sửa thành như thế này xem được không
Mã:Sub Delet_abc() Dim b As Long b = InputBox("Xin moi nhap dong can xoa", "GPE", 1) Cells(b, 1).EntireRow.Delete End Sub
On Error Resume Next
Rows(InputBox("Xin moi nhap dong can xoa", "GPE", 1)).Delete
Hay quá anh à. Nhưng Vậy thì ngắn quá anh ơiInputBox là phải bẫy lỗi (khi Cancel).
Sao không dùng Rows().Delete?
Nếu "ăn gian" thì có thể viết kiểu thế này:
PHP:On Error Resume Next Rows(InputBox("Xin moi nhap dong can xoa", "GPE", 1)).Delete
Quả là ngắn gọn, mà không nghĩ ra.InputBox là phải bẫy lỗi (khi Cancel).
Sao không dùng Rows().Delete?
Nếu "ăn gian" thì có thể viết kiểu thế này:
PHP:On Error Resume Next Rows(InputBox("Xin moi nhap dong can xoa", "GPE", 1)).Delete

Quả là ngắn gọn, mà không nghĩ ra.
Bạn thử:Hay quá Bác.
E xin hỏi thêm tí tí, liệu E chỉ cho phép xóa dòng thứ 18 trở đi thì có làm được không ạ, cần phải sửa macro thế nào ạ.
Sub abc()
Dim LR As Long, i As Long
With Sheets(1)
LR = .Range("A" & .Rows.Count).End(xlUp).Row
For i = LR To 18 Step -1
Rows(i).EntireRow.Delete
Next i
End With
End Sub

Như macro này thì lại không cho hỏi và chọn dòng cần xóa ạ?Bạn thử:
PHP:Sub abc() Dim LR As Long, i As Long With Sheets(1) LR = .Range("A" & .Rows.Count).End(xlUp).Row For i = LR To 8 Step -1 Rows(i).EntireRow.Delete Next i End With End Sub
Tôi nghĩ vầy sẽ nhanh hơn, không biết có đúng không nửa.Bạn thử:
PHP:Sub abc() Dim LR As Long, i As Long With Sheets(1) LR = .Range("A" & .Rows.Count).End(xlUp).Row For i = LR To 8 Step -1 Rows(i).EntireRow.Delete Next i End With End Sub
Sub abc()
Dim LR As Long
With Sheets(1)
LR = .Range("A" & .Rows.Count).End(xlUp).Row
If LR > 17 Then Rows("18:" & LR).EntireRow.Delete
End With
End Sub
Nếu vậy sửa thế này.Như macro này thì lại không cho hỏi và chọn dòng cần xóa ạ?
Sub GPE()
Dim b As Long
b = InputBox("Xin moi nhap dong can xoa", "GPE", 1)
If b > 17 Then Rows(b).EntireRow.Delete
End Sub

Bấm cancel thì báo lỗi macro rồi Bác ơiNếu vậy sửa thế này.
Mã:Sub GPE() Dim b As Long b = InputBox("Xin moi nhap dong can xoa", "GPE", 1) If b > 17 Then Rows(b).EntireRow.Delete End Sub
@ giaiphapNếu vậy sửa thế này.
Mã:Sub GPE() Dim b As Long b = InputBox("Xin moi nhap dong can xoa", "GPE", 1) If b > 17 Then Rows(b).EntireRow.Delete End Sub
Bạn lấy bẫy lỗi của bài 10 bỏ vào là xong thôiBấm cancel thì báo lỗi macro rồi Bác ơi

Bạn lấy bẫy lỗi của bài 10 bỏ vào là xong thôi
Bạn thử:Dạ, chạy thử thấy được rồi ạ. Macro mạnh quá đi mất...
Cho E hỏi thêm câu cuối. Sau khi chạy mấy thứ trên, E muốn đặt 1 dòng lệnh tại A19 bằng công thức: =IF(RC[1]=0;0;COUNTIF(R18C3:RC[1];"<>0")) thì E phải viết thế nào ạ, hi hi
Range("A19").Formula = "=IF(RC[1]=0;0;COUNTIF(R18C3:RC[1];""<>0""))"



Bạn có thể tự làm code gán công thức của bạn như sau:View attachment 182417
Mỗi lần E đưa cái công thức này vào thì nó báo lỗi như trên và Gạch vàng ở dòng Range("A19").Formula = "=IF(RC[1]=0;0;COUNTIF(R18C3:RC[1];""<>0""))" Bác ạ, sao thế nhỉ?

Hay quá Bác, E tự xử được luôn cái của E rồi. tks Bác nhiều!Bạn có thể tự làm code gán công thức của bạn như sau:
1. Nhập công thức như ý muốn của bạn bằng thủ công
2. Bấm Record macro
3. Kích đôi chuột vào ô chứa công thức mong muốn -> Enter
4. Stop Rec...
Vào VBA "thu hoạch" code .


Giải lao tí, "cái của em" ... em là Boy hay Girl vậy? kkkHay quá Bác, E tự xử được luôn cái của E rồi. tks Bác nhiều!
Vậy thì thêm vào phần kiểm tra lỗi nửa là xong.Bấm cancel thì báo lỗi macro rồi Bác ơi
Thì tác giả chỉ muốn xóa một dòng mà bác.@ giaiphap
Code này chưa đúng, chỉ xóa được 1 dòng

Boy chính gộc không pha trộn Bác ạGiải lao tí, "cái của em" ... em là Boy hay Girl vậy? kkk