Я написал суб, чтобы удалить пустые записи в строке, не меняя ячейки, но кажется излишне неуклюжим, и я хотел бы получить совет о том, как его улучшить.VBA Sub для удаления пробелов из улучшений строк
Public Sub removeBlankEntriesFromRow(inputRow As Range, pasteLocation As String)
'Removes blank entries from inputRow and pastes the result into a row starting at cell pasteLocation
Dim oldArray, newArray, tempArray
Dim j As Integer
Dim i As Integer
'dump range into temp array
tempArray = inputRow.Value
'redim the 1d array
ReDim oldArray(1 To UBound(tempArray, 2))
'convert from 2d to 1d
For i = 1 To UBound(oldArray, 1)
oldArray(i) = tempArray(1, i)
Next
'redim the newArray
ReDim newArray(LBound(oldArray) To UBound(oldArray))
'for each not blank in oldarray, fill into newArray
For i = LBound(oldArray) To UBound(oldArray)
If oldArray(i) <> "" Then
j = j + 1
newArray(j) = oldArray(i)
End If
Next
'Catch Error
If j <> 0 Then
'redim the newarray to the correct size.
ReDim Preserve newArray(LBound(oldArray) To j)
'clear the old row
inputRow.ClearContents
'paste the array into a row starting at pasteLocation
Range(pasteLocation).Resize(1, j - LBound(newArray) + 1) = (newArray)
End If
End Sub
Возможно, вы захотите рассмотреть [обзор кода] (http://codereview.stackexchange.com/tour) для такого рода вопросов. – RubberDuck
Да, здесь вы ошибаетесь, так как ваш код работает, и это делается обычным способом VBA, не так уж нужна оптимизация –
@hexereisoftware Я [очень ненавижу это отношение к разработке vba] (https://christopherjmcclellan.wordpress.com/2015/03/05/заместитель профессионально-УВА-разработчик /). Конечно, есть возможность улучшить этот код. Профессионалы должны поступать так. Я приветствую этого человека за то, что его можно улучшить и попросить о помощи. – RubberDuck