VBA Textbox Autofilter hides everything - excel

I implemented a google like search box into my spreadsheet, using an activex textbox.. However, in the beginning it worked fine, but now it hides the whole used range and i only see blank cells. This really needs to work 100%, but i can't figure out what's the problem.
The code is as follows:
Sub TextBox1_Change()
Application.ScreenUpdating = False
Range("$O$7").AutoFilter Field:=14, Criteria1:=TextBox1
End Sub
I'd appreciate your help with this issue.

I don't see any statement to clear previous filters, for example:
Worksheets(1).AutoFilterMode = False
Also, there should be Application.ScreenUpdating = True before End Sub to restore screen updating.

If TextBox1.vlaue = "" Then Application.Autofiltermode= False

Related

Dynamic filter keeps hiding my rows - Excel VBA

The moment I type in the text box my rows become hidden and don't come back after clearing the text box. I used the same exact code on a previous table in a different sheet and it worked flawlessly. I believe the error stems from me copying and pasting the entire table into a different sheet and tweaking the code for the new table. I checked on the linked cell and made sure to change the table name. What am I missing?
Private Sub TextBox1_Change()
Application.ScreenUpdating = False
ActiveSheet.ListObjects("Customers").Range.AutoFilter Field:=1, Criteria1:=[C2] & "*", Operator:=xlFilterValues
Application.ScreenUpdating = True
End Sub
Try this code, please. It will use DblClick event. Otherwise, the Change event will be triggered by any character you input. Now, after setting the filter criteria in the text box, you should double click inside it:
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean
Dim Tb As ListObject
Set Tb = ActiveSheet.ListObjects("Customers")
Application.ScreenUpdating = False
If TextBox1.Text = "" Then
Tb.AutoFilter.ShowAllData
Else
Tb.Range.AutoFilter field:=1, Criteria1:=CStr([C2]), Operator:=xlFilterValues
End If
Application.ScreenUpdating = True
End Sub

VBA - flickering after xlsheetvisible = true

I've got a problem and really need some help from you. I was trying to google the solution, but found nothing useful. My macro runs by clicking on a commandbutton1 which is located on sheet1. Important detail: a chart is also located on sheet1.
The only thing the macro does is switching sheet2 from 'hidden' to 'visible'.
Sub abc()
Sheets(2).Visible = Not Sheets(2).Visible
End Sub
THE PROBLEM: after switching the sheet2 from hidden to visible the screen is flickering.
Notes:
The problem occurs only on the sheets with charts. It seems like excel is doing some chart update.
It occurs only when sheet2 is being switched to "visible".
I've tried:
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
I deleted any other macros and events in the workbook.
I've tried to run a macro directly from VBA editor (not via commandbutton1).
I've tried debugging step by step.
Is there anyone who can help me with this issue?

Hiding the excels working with macro

I want to hide the excels while macros working on them. Application.visible is not working i don't know why. Is it possible for me to just write a code at the beginning so that until the end the excels won't be visible. Minimization is also works for me.
Thanks in advance
Are you calling it correctly? i.e.
Application.Visible = False
Alternatively you could 'freeze' the screen so you don't see anything whilst the macro is operating using:
Application.ScreenUpdating = False
I see Application.Visible is working fine for me.
I tried below code. I triggered below code on button click.
The Excel sheet is not displayed only excel icon was available on task bar.
Sub test()
Application.Visible = False
Cells(1, 1) = "Testing Visibility"
MsgBox "testing visibility"
ActiveWorkbook.Save
Application.Visible = True
End Sub

ScreenUpdating doesn't update screen in Excel 2013

I've code that takes 30+ mins to run. I have set screen updating to false while most of the code runs but every now and again I turn it to true and straight back to false.
In 2003, 2007 and 2010 this allows the screen to temporarily update. In 2013 it doesn't work.
How can I make Excel 2013 temporarily update the screen mid-macro?
Sub Test()
Application.ScreenUpdating = False
' Do loads of stuff here
Application.ScreenUpdating = True ' Enable to refresh screen
Application.ScreenUpdating = False ' Disable again
' Do more stuff here
Application.ScreenUpdating = True
End Sub
DoEvents worked for me. I don't know what causes this but inserting DoEvents in the Loop Method seems to correct the issue for me when I use it.
Sub LoopMethod
Foreach i in Identity
Call Loopthis
Next For
EndSub
Sub Loopthis
DoEvents
select.Cells(i, 6)
EndSub
I do place this code right before every event/screen I want to update and works fine for me:
Application.ScreenUpdating = True
DoEvents
Sheets("Main").Select 'Screen to update
Also I put the code inside every loop I use to write someting in the Sheet.
Activating another worksheet and then again activating the required worksheet worked for me - I had a code where the screen updating failed, I activated another worksheet and then again the one I was working on, it updated the current screen.
application.ScreenUpdating = False
''''''code'''''''
Thisworkbook.worksheets(any otherworksheet in workbook).activate
Thisworkbook.worksheets(current worksheet).activate
application.ScreenUpdating = True
As far as I have found the issue can be solved by jumping to another cell. You could do something like this:
Dim Ac as object
Set Ac = ActiveCell
Ac.Offset(0,IIf(Ac.Column = Application.Columns.Count, -1, 1)).Activate
Ac.Activate
As to the how or why of this behaviour I don't know (yet). As far as I have found now, it has something to do with the active cell before deactivating screen update, being the same as after reactivating screen update. But I haven

Hiding the formula bar in Excel for a specific file

I would like to hide the formula bar in a specific Excel file and only in this file. I know we can do it with VBA (Application.DisplayFormulaBar = False) but I am wondering if there is another solution like editing the CustomUI file.
Usually I edit the CustomUI file for hiding ribbon, adding custom tabs, ... It would be nice if we can hide the formula bar in this way.
Any suggestions?
Thanks.
Short answer is: No, you cannot.
Unfortunately, you cannot hide it by editing the CustomUI file. The formula bar has to be hidden using VBA. That being said, you can just run the hide operation on the Workbook_open event.
Private Sub Workbook_Open()
Application.DisplayFormulaBar = False
End Sub
You can turn it on/off depending on the active sheet like so:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Sheet1" Then
Application.DisplayFormulaBar = False
Else
Application.DisplayFormulaBar = True
End If
End Sub
I know it's a 2011 issue, but the solutions shown above don't seem to be the right ones for the problem in question.
If you modify using vba Aplication.whatelse this change applies to the entire excel app
To fix this instead of turning on/off when you open/close the document uses the sheet's activate/deactivate events
This way when your hidden document is turned on and when you turn off swatches.
This works perfect for me, to hide status bar and formula bar.
I leave you code to see how it works
Private Sub Workbook_Activate()
Application.DisplayStatusBar = False
Application.DisplayFormulaBar = False
End Sub
Private Sub Workbook_Deactivate()
Application.DisplayStatusBar = True
Application.DisplayFormulaBar = True
End Sub
You can accomplish this by using the workbook activate en deactivate events.
Just put Application.DisplayFormulaBar = False into the activate event and Application.DisplayFormulaBar = true in the deactivate event.
To avoid all opened Excel sheet formula bar hidden you can go for hiding the formula for a particular excel.
Sub test()
Sheet1.Unprotect "test"
Range("A1").FormulaHidden = True ' range which you want to hide formula.
'your code here
Sheet1.Protect "test"
End Sub

Resources