VB + Excel

6 отговора 392 прегледа
#1

VB + Excel

kak moga da Delete-na nqkoi red ot excel-ska tablica ?

Отговор
в отговор на trp #2

Re: VB + Excel

като не си сигурен в нещо - лесния начин да научиш команда е като пуснеш запис на макрос

Range("A4").Select
Selection.EntireRow.Delete


това да речем ще изтрие 4-ти ред

е ако искаш някакъв по-смислен алгоритъм това няма да свърши работа, но пък е най-лесния начин да скърпиш някой свои елементарни макроси

Отговор
в отговор на trp #3

Re: VB + Excel

За първия ред - Rows(1).Delete
За i-тия ред - Rows(i).Delete

Ако пишеш макрос извън листа, от който ще триеш:

Workbooks(''blah").Sheets("blah").Rows(i).Delete

Отговор
в отговор на trp #4

Re: VB + Excel

А как може да се изтрие ред по определен критерии, например ако реда е празен да го изтрие, ако ли не да си остане и да премине ан следващия ред

Отговор
в отговор на alexoff #5

Re: VB + Excel

Има различни подходи, освен това зависи от критериите. Най-общо казано с if

Ето например код, който ще трие празните редове в таблица със 10 колони и 100 реда:

Sub DeleteBlank()
Dim i As Integer
Dim j As Integer
Dim Flag As Boolean

With ThisWorkbook.Sheets(1)
For i = 100 To 1 Step -1
' Броенето е обратно, защото иначе няма как да се спре триенето - Excel ще изпадне в безкраен цикъл.
Flag = False
For j = 1 To 10
If Trim(.Cells(i, j).Value) = "" Then
Flag = True
End If
Next j
If Flag = True Then
.Rows(i).Delete
i = i + 1
' Иначе ще се прескачат редове
End If
Next i
End With

End Sub


Отговор
в отговор на _krez #6

Re: VB + Excel

пробвах кода, който си написал, но ми изпада в един безкраен цикъл

това което успях да напиша е следното

Sub DeleteBlank()

Dim j As Integer
Dim i As Integer
Dim Flag As Boolean

Flag = False

For j = 101 To 1 Step -1
For i = 21 To 1 Step -1
If Range("A1").Offset(j - 1, i - 1).Value = "" Then
Flag = True
Else
Flag = False
Exit For
End If
Next
If Flag = True Then
Rows(j).Delete
Else
End If
Next

End Sub

Отговор
в отговор на alexoff #7

Re: VB + Excel

Много странно. Би ли ми пратил по мейл файла, от който ти е забил макроса?

Отговор