У меня есть книга Excel, в которой я ищу дату в заголовке с помощью .Find
.
Например, если он находится в RANGE("C3")
, он должен удалить его ряды выше и столбцы перед.
Пожалуйста, помогите мне написать код VBA для выполнения этой операции.
Dim WSD As Worksheet
Set WSD = Worksheets("report")
Dim MyRange As Range
Set MyRange = WSD.Range("A:AZ")
Set R = MyRange.Find("Date", LookIn:=xlValues)
Debug.Print R.Address
да. я хочу, чтобы мой заголовок начинался с 1 строки и 1 столбца
мой макрос, который содержит много модулей, основан на A1. остальные все остальные завершены только для одного листа мой прогресс остановлен.
Пытаться,
dim MyRange as range
with Worksheets("report")
Set MyRange = .Range("A:AZ").Find("Date", LookIn:=xlValues)
if not MyRange is nothing then
if MyRange.column > 1 then
.cells(1, 1).resize(1, MyRange.column -1).entirecolumn.delete
end if
if MyRange.row> 1 then
.cells(1, 1).resize(MyRange.row-1, 1 ).entirerow.delete
end if
end if
end with
Большое спасибо, @Jeeped. я очень ценю вашу поддержку. это решило мою проблему.
другой путь:
Dim MyRange As Range
With Worksheets("report")
Set MyRange = .Range("A:AZ").Find("Date", LookIn:=xlValues)
If Not MyRange Is Nothing Then MyRange.Resize(.UsedRange.Rows.Count + MyRange.Row, .UsedRange.Columns.Count + MyRange.Column).Cut Destination:=.Range("A1")
End With
Или
Dim MyRange As Range
With Worksheets("report")
Set MyRange = .Range("A:AZ").Find("Date", LookIn:=xlValues)
If Not MyRange Is Nothing Then
.Rows(1).Insert
.Columns(1).Insert
With .Range("A1", MyRange)
.Resize(, .Columns.Count - 1).EntireColumn.Delete
.Resize(.Rows.Count - 1).EntireRow.Delete
End With
End If
End With
Итак, для всех намерений и целей вы переносите Date на A1 ...?