حذف سطر خالی جدول اکسل با کد vba
- آخرین بروزرسانی: 12 شهریور 1402
آموزش بسیار کاربردی اکسل حذف سطر خالی جدول اکسل با کد vba یکی از پرکاربردی ترین کد های VBA می باشد توی این آموزش رایگان اکسل برای شما به صورت کامل نحوه حذف سطر خالی جدول اکسل آموزش میدهیم پس با آکادمی روح الله همراه باشید
برای این منظور میتوانید با استفاده از کد VBA یک سطر خالی را از جدول حذف کنید. در زیر یک مثال از چگونگی انجام این کار آمده است:
فرض کنید که شما یک ورکشیت دارید به نام “Sheet1” و در آن یک جدول با نام “Table1” قرار دارد. میخواهید یک سطر خالی از این جدول حذف شود. در اینجا کدی که این کار را انجام میدهد آمده است
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub academyruhollah() Dim ws As Worksheet Dim tbl As ListObject Dim lastRow As ListRow Dim i As Long ' تعيين ورکشيت مورد نظر Set ws = ThisWorkbook.Worksheets("Sheet1") ' تعيين جدول مورد نظر Set tbl = ws.ListObjects("Table1") ' پيدا کردن آخرين سطر در جدول Set lastRow = tbl.ListRows(tbl.ListRows.Count) ' حذف سطر خالي For i = tbl.ListRows.Count To 1 Step -1 If Application.WorksheetFunction.CountA(tbl.ListRows(i).Range) = Then tbl.ListRows(i).Delete End If Next i End Sub |
برای استفاده از این کد، میتوانید به این صورت عمل کنید:
- باز کردن ویرایشگر کد VBA با فشار دادن
ALT
+F11
در اکسل. - از قسمت “Insert” گزینه “Module” را انتخاب کنید تا یک ماژول جدید ایجاد شود.
- کد فوق را در ماژول جدید قرار داده و آن را ذخیره کنید.
- کد را اجرا کنید با انتخاب ماژول در محیط ویرایشگر و فشردن
F5
یا اجرای دستورات مناسب برای اجرای کد.
لطفاً توجه داشته باشید که قبل از اجرای کدهای VBA بر روی فایلهای خود، تهیه نسخه پشتیبان از آنها را فراموش نکنید، زیرا اشتباه در کدگذاری ممکن است باعث مشکلات در فایل شود.
سلام بسیار عالی ، بیان شیوا و و روان
سلام
خیلی ممنون از لطف و انرژی مثبتتون. خوشحالم که مطالب براتون مفید بوده. 🙏
همیشه موفق و سربلند باشید. 🌟
درود و عرض ادب خدمت شما
بسیار عالی
من اخیرا با پیج شما آشنا شدم و بسیار آموزش های شما را دوست دارم.
در خصوص این آموزش یک سوال داشتم: بعد از اجرای ماکرو، عموما امکان آندو وجود نداره مگر بلافاصله فایل را بدون ذخیره ببندیم و مجددا باز کنیم. آیا راهی وجود داره که بدون این کار ماکروی اجرا شده را آندو کنیم. مصلا در همین آموزش سطرهای حذف شده را باز گردانیم؟
سپاسگزارم
سلام ارادت خدمت شما دوست عزیز خوشحال هستم که برای شما هم اموزش ها کاربردی بوده بابت ارسال نظر تون هم سپاس گذارم
در اکسل، اجرای ماکروها به صورت پیشفرض قابلیت **Undo** (بازگشت به حالت قبل) را غیرفعال میکند، چرا که VBA مستقیماً تغییراتی در فایل اعمال میکند و این تغییرات در تاریخچه Undo اکسل ثبت نمیشود. با این حال، میتوان با استفاده از تکنیکهایی، عملکردی مشابه Undo را برای ماکروها پیادهسازی کرد.
راهحلها برای بازگرداندن سطرهای حذف شده:
1. ذخیره نسخه پشتیبان قبل از اجرای ماکرو
پیش از اجرای ماکرو، از دادهها نسخهای پشتیبان تهیه کنید. برای این کار، میتوانید کل دادههای موجود در شیت را در یک شیت یا فایل دیگر کپی کنید. اگر نیاز به بازگرداندن دادهها باشد، نسخه پشتیبان را جایگزین کنید.
کد نمونه برای ذخیره نسخه پشتیبان:
Sub BackupBeforeDelete()
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Backup_" & Format(Now, "hhmmss")
End Sub
2. ذخیره اطلاعات سطرهای حذفشده در حافظه (آرایه یا شیت دیگر)
سطرهایی که حذف میشوند را قبل از حذف، در یک آرایه یا شیت دیگر ذخیره کنید. در صورت نیاز میتوانید از این اطلاعات برای بازگرداندن دادهها استفاده کنید.
کد نمونه برای ذخیره سطرهای حذفشده:
Sub DeleteRowsWithUndo()
Dim ws As Worksheet
Dim rng As Range, cell As Range
Dim deletedRows As Collection
Dim rowData As Variant
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Set deletedRows = New Collection
' بررسی و حذف سطرهای خالی
For Each cell In ws.Range("A1:A" & lastRow)
If Trim(cell.Value) = "" Then
rowData = ws.Rows(cell.Row).Value
deletedRows.Add rowData
ws.Rows(cell.Row).Delete
End If
Next cell
' ذخیره سطرهای حذفشده در یک شیت دیگر (اختیاری)
Dim backupSheet As Worksheet
On Error Resume Next
Set backupSheet = ThisWorkbook.Sheets("DeletedRows")
On Error GoTo 0
If backupSheet Is Nothing Then
Set backupSheet = ThisWorkbook.Sheets.Add
backupSheet.Name = "DeletedRows"
End If
backupSheet.Cells.Clear
Dim i As Long
For i = 1 To deletedRows.Count
backupSheet.Rows(i).Value = deletedRows(i)
Next i
End Sub
3. استفاده از کد Revert برای بازگرداندن سطرهای حذفشده
در ترکیب با تکنیک بالا، میتوانید کدی برای بازگرداندن دادهها از شیت یا آرایه پشتیبان بنویسید.
کد بازگرداندن:
Sub RevertDeletedRows()
Dim ws As Worksheet
Dim backupSheet As Worksheet
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
Set backupSheet = ThisWorkbook.Sheets("DeletedRows")
lastRow = backupSheet.Cells(backupSheet.Rows.Count, 1).End(xlUp).Row
' کپی سطرهای پشتیبان به شیت اصلی
backupSheet.Rows("1:" & lastRow).Copy
ws.Rows(1).Insert Shift:=xlDown
End Sub
نکات مهم:
– اگر دادههای شما پیچیده و حساس هستند، قبل از اعمال هر ماکرو، حتماً از کل فایل نسخه پشتیبان تهیه کنید.
– برای ماکروهای پیشرفته میتوانید از ساختارهای ذخیره داده مانند **Dictionary** یا **Collection** استفاده کنید.
– همیشه راهنماییهایی در برنامه ارائه دهید تا کاربر بداند در صورت اشتباه، چگونه دادهها را بازیابی کند.
در صورت نیاز به توضیحات بیشتر، خوشحال میشوم راهنمایی کنم! 😊
درود بر شما
بسیار عالی و کامل.
سپاسگزارم
سلام ارادت خدمت شما دوست عزیز
خیلی خوشحالم که براتون مفید بود. هر زمان سوال یا مشکلی داشتید، در خدمتم.
موفق و سربلند باشید! 🙏