Làm sao để insert dòng trong VBA nhỉ
Thật sự rất mong mọi người giúp đỡ. Cám ơn nhiều!
Tôi đang làm 1 file vBA trên excel, chủ yếu là record lại nhưng hoạt động mình đã làm. Tuy nhiên, tôi gặp phải một số vấn đề khó khăn sau
Thứ nhất: Tôi đặt lệnh đổi tên sheet, nếu như ô A1 của sheet2 = C thì sheet 1 đổi tên là C. Tương tự, đặt tên sheet1 theo ô A1 của sheet 2, tôi phải dùng hàm như thế nào nhỉ!
Thứ 2. Tôi muốn insert dòng. Ví dụ như sau. Tôi có 1 chuỗi dữ liệu từ cột C1-C10 của sheet 1; Dữ liệu lần lượt là 1, 1, 2, 2, 3, 4, blank, 5, 6, 6. Tôi muốn nếu như ô C2 = C1 thì nothing happen, nếu C2<>C1 thì insert một dòng giữa C2 và C1. Tương tự như vậy với các số còn lại. Blank cũng coi như là khác 4. Mọi người giúp giùm
Thứ 3: Tôi chưa biết cách sử dụng Dim, tôi chẳng hiểu gì về integer, boolean với string cả, chỉ nhớ mang máng ngày trước học Pascal thì có biết sơ sơ thôi! Do chập chững vào VBA nhờ cái tool Record Macro thôi! Thật sự rất mong mọi người giúp đỡ. Cám ơn nhiều!
Biến:
Trong VB hay VBA nếu bạn đã đặt "Option Explicit" ở đầu (Module, Form….) tức là tất cả các biến có trong chương trình thì đều phải khai báo. Cách khai báo trong VB, VBA là dùng từ khoá Dim sau đó đến tên_biến, tiếp theo là từ khoá As và cuối cùng là kiểu của biến, nếu có nhiều biến thì được ngăn cách với nhau bởi dấu phẩy.
Cú pháp như sau:
Dim <tên_biến> [As <kiểu dữ liệu>]
VD:
Dim i As Integer, j As Integer, col As Integer
Có nghĩa là ta khai báo 3 biến có tên là i, j và col có kiểu là Integer.
Kiểu dữ liệu:
Có rất nhiều kiểu dữ liệu: Kiểu số (Integer, Long, Double và Currency), kiểu Byte, kiểu String, Kiểu Booean, kiểu Date, kiểu Object, kiểu Variant…
Kiểu Byte nhận giá trị trong khoảng 0 – 255
Kiểu String: kiểu chuỗi ký tự
Kiểu Date: kiểu ngày tháng
Kiểu Boolean: Kiểu này chỉ nhận 2 giá trị True (1) hoặc False (0).
Kiểu Integer: Kiểu số nhận giá trị trong khoảng từ -32767 đến 32767
…..
Thứ 2. Tôi muốn insert dòng. Ví dụ như sau. Tôi có 1 chuỗi dữ liệu từ cột C1-C10 của sheet 1; Dữ liệu lần lượt là 1, 1, 2, 2, 3, 4, blank, 5, 6, 6. Tôi muốn nếu như ô C2 = C1 thì nothing happen, nếu C2<>C1 thì insert một dòng giữa C2 và C1. Tương tự như vậy với các số còn lại. Blank cũng coi như là khác 4. Mọi người giúp giùm
Trong cửa sổ VBA nhấn Insert/ Module, rồi thêm đoạn code sau:
Option Explicit
Public Sub Insert_Row()
On Error GoTo thoat
Dim rngData As Range
Dim rngThaydoi As Range
Dim i As Integer, j As Integer
Set rngData = Selection
i = 2
For j = 2 To rngData.Rows.Count * 2
If rngData.Cells(i, 1) <> rngData.Cells(i - 1, 1) And Not IsEmpty(rngData.Cells(i, 1)) Then
rngData.Cells(i, 1).Select
Selection.EntireRow.Insert
i = i + 2
Else
i = i + 1
End If
Next j
rngData.Cells(1, 1).Select
thoat:
End Sub
Cách sử dụng:
Chọn vùng, sau đó chạy Macro trên.
www.giaiphapexcel.com/diendan/threads/l%C3%A0m-sao-%C4%91%E1%BB%83-insert-d%C3%B2ng-trong-vba-nh%E1%BB%89.764/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Bình luận