D
DictatorDraco
i've never touched visual basic before, but i managed to take the source from
FindItAll (though i don't think it was the actual source seeing as how it
didn't work) and edit it to fit my needs.
looking to make a VB macro in Excel that will find a cell and move the
entire row that cell is in to the top. doing this for work, and my boss knows
i'm not a programmer. i think he wants me to learn. if anyone could point out
bugs or tell me commands, it would be much appreciated.
here's the code:
Sub FindAndMoveToTop()
Dim FirstCell As Range
Dim NextCell As Range
Dim WhatToFind As Variant
'Window prompt allowing user to define WhatToFind
WhatToFind = Application.InputBox("What are you looking for?", "Search", ,
100, 100, , , 2)
'If WhatToFind is a value and not blank, move on
If WhatToFind <> "" And Not WhatToFind = False Then
'Start with first worksheet
Worksheets("Sheet1").Activate
'Start at first cell
Range("A1").Select
'Find the first cell containing WhatToFind (specified by user)
Set FirstCell = Cells.Find(What:=WhatToFind, LookIn:=xlValues,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False)
'If FirstCell exists, move on
If Not FirstCell Is Nothing Then
'Ok, First Cell is set
FirstCell.Activate
'Keep going
On Error Resume Next
'NextCell is currently undefined. Don't mistake NextCell for FirstCell
While (Not NextCell Is Nothing) And (Not NextCell.Address = FirstCell.Address)
'Find next row containing what is in FirstCell (ActiveCell) and define as
NextCell
Set NextCell = Cells.FindNext(After:=ActiveCell)
'Don't mistake NextCell for FirstCell, move on
If Not NextCell.Address = FirstCell.Address Then
'Activate subsequent NextCells
NextCell.Activate
End If
Wend
End If
'Select all rows containing WhatToFind - NOT WORKING ARRGGGHHHH!!! only
selecting the cell, not the row.
'Also, if >1 instance of WhatToFind, acts funky...
Worksheets("Sheet1").Rows(ActiveCell).Select
'Cut all rows containing WhatToFind
Selection.Cut
'Back to A1
Cells(1, 1).Select
'Insert cut rows here
Selection.Insert Shift:=xlDown
'Clean up
Set NextCell = Nothing
Set FirstCell = Nothing
Range("A1").Select
End If
End Sub
major problem is how to select ALL of the ROWS that WhatToFind is found in.
also, if WhatToFind is found in two cells in the same row, it will move the
second cell containing it in that row to the next unused row. idk. it acts
really funky.
i think Worksheets("Sheet1").Rows(ActiveCell).Select is the major problem
spot.
i think Cells(1, 1).Select might be causing the odd behavior for two cells
in the same row.
any ideas?
FindItAll (though i don't think it was the actual source seeing as how it
didn't work) and edit it to fit my needs.
looking to make a VB macro in Excel that will find a cell and move the
entire row that cell is in to the top. doing this for work, and my boss knows
i'm not a programmer. i think he wants me to learn. if anyone could point out
bugs or tell me commands, it would be much appreciated.
here's the code:
Sub FindAndMoveToTop()
Dim FirstCell As Range
Dim NextCell As Range
Dim WhatToFind As Variant
'Window prompt allowing user to define WhatToFind
WhatToFind = Application.InputBox("What are you looking for?", "Search", ,
100, 100, , , 2)
'If WhatToFind is a value and not blank, move on
If WhatToFind <> "" And Not WhatToFind = False Then
'Start with first worksheet
Worksheets("Sheet1").Activate
'Start at first cell
Range("A1").Select
'Find the first cell containing WhatToFind (specified by user)
Set FirstCell = Cells.Find(What:=WhatToFind, LookIn:=xlValues,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False)
'If FirstCell exists, move on
If Not FirstCell Is Nothing Then
'Ok, First Cell is set
FirstCell.Activate
'Keep going
On Error Resume Next
'NextCell is currently undefined. Don't mistake NextCell for FirstCell
While (Not NextCell Is Nothing) And (Not NextCell.Address = FirstCell.Address)
'Find next row containing what is in FirstCell (ActiveCell) and define as
NextCell
Set NextCell = Cells.FindNext(After:=ActiveCell)
'Don't mistake NextCell for FirstCell, move on
If Not NextCell.Address = FirstCell.Address Then
'Activate subsequent NextCells
NextCell.Activate
End If
Wend
End If
'Select all rows containing WhatToFind - NOT WORKING ARRGGGHHHH!!! only
selecting the cell, not the row.
'Also, if >1 instance of WhatToFind, acts funky...
Worksheets("Sheet1").Rows(ActiveCell).Select
'Cut all rows containing WhatToFind
Selection.Cut
'Back to A1
Cells(1, 1).Select
'Insert cut rows here
Selection.Insert Shift:=xlDown
'Clean up
Set NextCell = Nothing
Set FirstCell = Nothing
Range("A1").Select
End If
End Sub
major problem is how to select ALL of the ROWS that WhatToFind is found in.
also, if WhatToFind is found in two cells in the same row, it will move the
second cell containing it in that row to the next unused row. idk. it acts
really funky.
i think Worksheets("Sheet1").Rows(ActiveCell).Select is the major problem
spot.
i think Cells(1, 1).Select might be causing the odd behavior for two cells
in the same row.
any ideas?