Se puede ocupar la función findall de excel desde vba excel

Mi pregunta es si se puede ocupar la función de findall de excel con vba excel.

1 respuesta

Respuesta
1

La función no existe en VBa, pero encontré 2 ejemplos que otros expertos han desarrollado.
Fuente : http://www.excelfox.com/forum/f13/findall-function-vba-147/
En esa página puedes encontrar dos ejemplos de funciones.
Copia la siguiente función en un módulo.
Enum LookAtConstantsxlWholeCell = xlWholexlPartCell = xlPartEnd EnumFunction FindAll(FindWhat As String, Optional LookAt As LookAtConstants = xlWholeCell, _Optional MatchCase As Boolean = False, Optional SearchAddress As String) As RangeDim LastRowPlusOne As Long, RowOffset As Long, ColOffset As Long, SearchRange As Range, CopyOfSearchRange As RangeOn Error Resume NextIf Len(SearchAddress) = 0 ThenSet SearchRange = SelectionElseSet SearchRange = Range(SearchAddress)If SearchRange Is Nothing Then Exit FunctionEnd IfLastRowPlusOne = Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row + 1If SearchRange Is Nothing Then Set SearchRange = SelectionIf Rows.Count - LastRowPlusOne < SearchRange.Rows.Count ThenMsgBox "SearchRange contains too many rows!", vbCritical, "Search Range Too Large"Exit FunctionEnd IfRowOffset = LastRowPlusOne - SearchRange(1).RowColOffset = SearchRange(1).Column - 1Set CopyOfSearchRange = Cells(LastRowPlusOne, 1).Resize(SearchRange.Rows.Count, SearchRange.Columns.Count)Application.ScreenUpdating = FalseWith CopyOfSearchRangeSearchRange.Copy .Cells(1).Replace FindWhat, "=" & FindWhat, LookAt, , MatchCaseSet FindAll = .SpecialCells(xlCellTypeFormulas).Offset(-RowOffset, ColOffset).ClearEnd WithApplication.ScreenUpdating = TrueEnd Function
Para usar la función anterior. En otro módulo puedes poner algo así:
Sub busca()
Dim c As Range
Set c = FindAll("am", , , "A1:Z1000")
c.Select
c.Interior.ColorIndex = 3
End Sub
Saludos. Dam

La pregunta no admite más respuestas

Más respuestas relacionadas