VB + Excel
6 отговора
392 прегледа
Re: VB + Excel
като не си сигурен в нещо - лесния начин да научиш команда е като пуснеш запис на макрос
Range("A4").Select
Selection.EntireRow.Delete
това да речем ще изтрие 4-ти ред
е ако искаш някакъв по-смислен алгоритъм това няма да свърши работа, но пък е най-лесния начин да скърпиш някой свои елементарни макроси
Range("A4").Select
Selection.EntireRow.Delete
това да речем ще изтрие 4-ти ред
е ако искаш някакъв по-смислен алгоритъм това няма да свърши работа, но пък е най-лесния начин да скърпиш някой свои елементарни макроси
Re: VB + Excel
За първия ред - Rows(1).Delete
За i-тия ред - Rows(i).Delete
Ако пишеш макрос извън листа, от който ще триеш:
Workbooks(''blah").Sheets("blah").Rows(i).Delete
За i-тия ред - Rows(i).Delete
Ако пишеш макрос извън листа, от който ще триеш:
Workbooks(''blah").Sheets("blah").Rows(i).Delete
Re: VB + Excel
А как може да се изтрие ред по определен критерии, например ако реда е празен да го изтрие, ако ли не да си остане и да премине ан следващия ред
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
Ето например код, който ще трие празните редове в таблица със 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
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
това което успях да напиша е следното
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
Re: VB + Excel
Много странно. Би ли ми пратил по мейл файла, от който ти е забил макроса?