Excel 2010 :: Public Variables From Event Handling Procedure?

Jan 22, 2014

Excel 2010

I am trying to set public variables from an event handling procedure based in a worksheet so I can use that variable in a userform. Nothing I have tried works no matter where I declare the variable. I am using a msgbox to display the variable (a range) but it shows as blank regardless of whether I place the variable in a module, this workbook object or in the sheet object where the event code is placed.

I am sure there is a simple way to transfer variables from the sheet's code (where it must remain as the variable depends on the target cell's position that triggers the event).

View 2 Replies


ADVERTISEMENT

VBA - Error Handling: Determining The Sub Procedure

Feb 13, 2007

In an error handling procedure, I want to be able to capture the name of the Module and Sub procedure (macro) that the error has occurred in.

Is there any way to do this, outside of storing the name of the Sub somehow in a variable?

The Err.Source method seems to only contain very broad information, such as "VBA Project" when an error is encountered.

View 9 Replies View Related

Excel 2010 :: Error Handling Routine Which Stores Name Of File

Jun 3, 2014

I have written a VBA procedure which loops through excel files in an array: in turn it opens the file, refreshes the data, saves the file and closes. I would like to write an error handler which stores the file which errored (copied from the loop iteration) and the error description to an array. The error handler should then close the file and continue with the next iteration - e.g.

Code:
If ActiveWorkbook.ReadOnly Then
ActiveWorkbook.Close
Next i
*Although a generic if error may be better.

My idea is that all files which errored in some way will be stored in an array which I can automatically print/send to a user so they can manually figure out the problem. (This element falls outside the range of this query).

Below is a simple example of my efforts which only contains one file in the array to make things simpler: the error handler section won't work, it's just there to show my thinking

Code:
Sub Refresh_CRIS()
On Error GoTo Errorhandler
Dim routepath As String
routepath = "
chdfsSharedAreaPrivateTest"
ChDir routepath

[Code] ........

Errorhandler:
On Error Resume Next
Failed = Array(i)
If ActiveWorkbook.ReadOnly Then 'Just an example for testing
ActiveWorkbook.Close
Else
MsgBox "Pivots which failed to refresh:" & Failed '& ", ", 0, "Debug" 'Test with msgbox
End If
End Sub

Using Excel 2010

View 5 Replies View Related

Pass Userform To Public Sub Procedure

Feb 15, 2010

I have a userform that has a number of cascading comboboxes, however i wish to use the same cascading feature in a number of other userforms. So what i am trying to achive is calling the cascading element from a public macro, to do this i need to pass the userform name to the procedure. The snippet of code i am using is:

Form:
Private Sub ComboBox1_Change()
If ComboBox1.Value <> "" Then
myform = Me.Name
Call Cascade1(myform)
End If
End Sub

Module:
ub Cascade1(myform)
myform.Label2.Visible = True
myform.ComboBox2.Visible = True
myform.ComboBox2.RowSource = Range(myform.ComboBox1.RowSource).Cells(myform. ComboBox1.ListIndex + 1, 1)
End Sub

View 2 Replies View Related

Excel 2010 :: Procedure To Write Values To Range Using Array

May 23, 2012

Im using excel 2010 As it's 60 times quicker I was trying to speed up my code and replace all loops by putting the value into an array, and then transfer the array to the worksheet

It seems to be straightforward for math calculations like in this example:

[URL]

But no luck with the one below. I was trying to test it on a simple loop which replaces two types of string into the 3rd one:

Code:

Dim lastrow, lastrow2, i As Long
With Worksheets("KPI5")
lastrow2 = .Range("N" & Rows.Count).End(xlUp).Row
.Range("T7:T" & lastrow2).Value = .Range("F7:F" & lastrow2).Value
For i = 8 To lastrow2
If .Range("T" & i).Value = "Modification" Then

[code]....

View 4 Replies View Related

Spin Button Event Handling

Nov 26, 2008

The issue I'm having is with the ActiveX Spin Button (in 2007, formerly in the Control toolbox in 2003). I need the Spin Button to call a certain macro whenever it is clicked up or down. I know how to do this with one spin button, the problem is that the workbook I'm creating could potentially have dozens (or even hundreds) of these spin buttons that all need to call the same macro. It doesn't seem feasible to have to create separate Change event functions for each of these.

My company used to use the simpler form controls for this process, but a situation has come up where we need the ability to make the buttons invisible, or at least appear disabled, and that doesn't seem doable with the form controls.

So my question is, is there a way to specify in my workbook that whenever a spin button is clicked, this particular macro is to be called? Or even, whenever an ActiveX object is clicked, call the macro, because the spin buttons will be the only ActiveX objects in the workbook. I've read a bit about how to create global event handlers for worksheets and workbooks, but I can't find anything related to spin buttons specifically.

View 11 Replies View Related

Event Handling For Controls Created At Runtime

Dec 14, 2009

I am having trouble working through the examples given on other posts for this topic. I have a userform that creates a number of controls at runtime. One group of controls is a series of textboxes and a label underneath that sums the values of the textboxes. When a user changes the value in a textbox the label needs to update the sum. I have read about created class modules to define the event but it is all going over my head.

A piece of the code that creates the controls is:

View 14 Replies View Related

Public Variables Not Holding The Value

May 14, 2008

I am trying to use a public variable but it is not holding the value when I call another sub.

Here is basically what I have:

Public AcctName as Long

Sub Statments()
There is much more code in here but it is not relevent
AcctName = an account name lets say "frank"

If X XX then
Call Title
End If

End Sub

It then goes to the title sub and executes the code however it is supposed to write out the value held in acctname but it comes up blank instead of as Frank which is the value it held when it left the statments sub. I am new to this public thing and need any help I can get.
Just a note: the spelling is correct and the variable does hold the correct value before title sub is called.

View 9 Replies View Related

Public Variables Duration

Jul 21, 2009

I've recently been experiencing some strange phenomena in relation to public variables. It seems that if I run separate routines in quick enough succession (e.g. press a button twice within a couple of seconds), the memory of the public variable "hangs over" into the second routine.

The routines, however, are completely separate events. And I'm not using userforms or anything like that in order to keep VBA running in the background. In which case it seems that Public variables don't always get set to nothing with the end of the final sub in a routine. Has anyone else experienced anything like this? I was under the impression only Static variables could do this.

View 9 Replies View Related

Nullifying Public Variables

Oct 20, 2006

I'm programming with multiple workbooks. So public variables in one workbook often reference ranges in another. Anyhow, I have found that, when closing a workbook, unless I nullify all public variables that reference this workbook, it closes in excel but remains visible in the VB Editor. When I open the workbook again, another instance of its VB project appears in the VB Editor..and so on and so on, which is obviously pretty annoying..

I've worked out a way of nullifying (setting equal to nothing) all public variables in a workbook, but it's quite arduous and I haven't tried it yet.. basically, it involves running a code which runs through the procedure which sets these public variables (they are all set in a single procedure), then having the code write a new subroutine setting all variables to nothing, then running this subroutine..

View 3 Replies View Related

Declaring Public Variables

Apr 19, 2007

how do you declare public variables? In one of my forms I declare the variables but for some reason can not access them in other forms.

Public Rm_new As Integer
Public Angle_new As Integer
Public Pl_new As Integer

Public Sub cal_graph_Click()
'Stating variables
Rm_new = text_rm.Text
Angle_new = text_angle.Text
Pl_new = text_length.Text

View 3 Replies View Related

Userform Event Handling Within A Standard Code Module?

Jan 7, 2010

Can I place userform event handling within the code module where the rest of my program resides or does it have to go in the code module that is attached to the userform?

View 3 Replies View Related

Reset All Public Variables In A Module

Aug 6, 2009

Is tere a way to reset all public variables in a module. I have a number of sub routines withing the same module and need to carry a variable from one to another so I have decalared tham as public variables.

This works fine except for an instance when I expect the variable to be empty (because nothing has yet been assigned to it) when in fact it contains the value that was assigned to last time another sub was run. So I suppose what I need is a way to reset all the variables in the module when a particular sub ends

View 3 Replies View Related

UserForm Variables In Public Modules

Jan 13, 2008

I make a userform called Option and now i want to call some of the variables of the userform in a module. First i try to copy this variables in a cell with the next

ActiveSheet.Cells(2, 3) = Me.MediaP.Value

and it works. But now, i want to call to MediaP in a module. For do that I try to do this:

With Worksheets("Hoja2")
.Range("B1").Value = Option.MediaP.Value

but it doesn't work. I don't want to use public variables or copy/use the information of the cell(2,3), i only want to know how use the information on the textbox called MediaP in a module.

View 3 Replies View Related

Subscript Out Of Range Using Public Array Variables

Aug 18, 2006

In my VBA project I've declared several public variables as normal (ahead of
all procedures) ... Public simolo() As double etc. They are declared in normal modules, and arent declared twice. I set the values in one procedure and then execute a second procedure but, when the variable is encountered in the second procedure, it appears to be empty and I get a "Subscript out of range" error. Clearly, the public variable isn't public since no data is stored in it.
What is going on?

View 6 Replies View Related

Pass Variables From Userform To Public Procedures

Nov 17, 2007

When working in an userform, and you call another sub routine within the userform, will all variables passed automatically be byref (no way to do byval?)?

View 3 Replies View Related

Event Procedure

Dec 11, 2007

I've created a macro with a custom dialog box, but I don't know how to make the transition from when I make the dialog box pop up, the user enters the information, then they click "Continue" or "Cancel" or whatever it may be, how to do I make it happen from there out?

Do I make the command buttons a boolean and if they click it's true? How do I make it work?

View 14 Replies View Related

Excel 2010 :: Combobox Event Error

Jul 10, 2013

Using Excel 2010. I have a ComboBox (Not ActiveX) on a worksheet

I'm trying to add an event so that when user click on a choice a macro is fired using the selected item as citeria for a filter When I click on the drop down and make a selection I receive this error msg:

Cannot find the macro "cboUserSelection_Change" The macro may not be available in this workbook or all macros may be disabled

I also tried _AfterUpdate - similar error message.

I added the Combo Box code to the Worksheet code, not a standard module

I was able to run a quick test macro so I do not believe "all macros are disabled"

View 1 Replies View Related

Excel 2010 :: SUMIF With Multiple Variables?

Dec 9, 2013

Excel 2010 Windows 7

There is a lot going on, including a check box, which I dont have much experience with and data on two different sheets. I need to sumif the box is checked (true cell) and the item matches the item on another sheet then I need to sum the qty in the adjacent column.

Inventory sheet:

I will have a similar formula in both C and D, but this will be for what I need in D, and I should be able to figure C out from that. What I have to get my starting number is "=SUM('Proc-Pack SUMMARY'!B16-'Proc-Pack SUMMARY'!C16)". Now I need to subtract what is sold from that number to give me a current on hand number.

Type
date
qty packaged
qty bulk

Inventory sold sheet:

The type column is a drop down box with that matches the type column on the inv sheet. The "cyl" and "lbs" columns have check boxes in them. So if C (cyl) is checked and A matches A on the inventory sheet I need to subtract D.

Type
Cyl
Lbs
Qty

Ive tried various variations of this "=SUM('Proc-Pack SUMMARY'!B16-'Proc-Pack SUMMARY'!C16)-sumif(Sold!F:F,"true",Sold!E:E=Inventory!A:A,Sold!H)"

Also is it possible to link so you can only one of the two check boxes in a row? I know the option button does this, but I didnt think that would work with the formula.

View 7 Replies View Related

Excel 2010 :: Pivot Table Change Event

Mar 22, 2012

I have three worksheets Sheet 1, Sheet 2 and Sheet 3 with three Pivot Tables

Sheet1 - Sheet1Pvt1
Sheet2 - Sheet2Pvt2
Sheet3 - Sheet3Pvt3

When I use In Sheet 2 the following lines of code

Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
Application.EnableEvents = False
Application.ScreenUpdating = False
MsgBox "The pvt table refreshed " & Target.Name
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

and even If I Refresh Sheet 3 pivot table, Sheet 2 Event is triggered and it prints "The pvt table refreshed Sheet2Pvt2";

How to restrict the event code only to Sheet 2 and pvttbl Sheet2Pvt2.

View 3 Replies View Related

Excel 2010 :: Condensing VBA Code - Using Dynamic Variables?

Jul 17, 2012

I have some VBA that dumps various sheets data into an SQL Database.

Part of that requires me to sanitize all of the fields before they make it to the DB, (at least to prevent the code from breaking itself w/ errant ' characters.

right now my code is as follows

Code:
If InStr(aa, "'") > 0 Then
aa = Replace(aa, "'", "''")
End If
If InStr(bb, "'") > 0 Then
bb = Replace(bb, "'", "''")

[Code] ......

I was hoping to condense it to something like the following, however it is not working how I hoped / want it to. .. I had found somewhere out there that this Eval() function possibly could be used to 'reference' dynamic variables, however it does not appear to work at all anymore, and even then it may only have worked to 'read' and not 'write' to the variable. (Excel 2010, on Windows 7 64-bit).

Code:
itemsToSanitize = "aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,pp,qq,rr,ss,tt,uu,vv,ww,xx,yy,zz,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh"
ITSArray = Split(itemsToSanitize, ",")

For Each thing In ITSArray
If InStr(Eval(thing), "'") > 0 Then
Eval(thing) = Replace(Eval(thing), "'", "''")
End If
Next thing

View 7 Replies View Related

Excel 2010 :: Catching User Delete Row / Column Event Possible?

Nov 15, 2012

If possible, I'd like to be able to catch & handle the event of a User deleting a row (or potentially a column) from a specific Worksheet so I can then implement some automated "housekeeping processing" on other existing rows / columns.

I'm using XL 2010 so from what I've found so far it looks like I should possibly be using the Worksheet_Change() function, but beyond that I'm currently stuck.

View 1 Replies View Related

Excel 2010 :: Run Listbox CLICK Event After Item Is Selected?

Feb 21, 2013

Excel 2007/2010.

Hope this is fairly easy to solve. I have Screen #1 with a listbox with a CLICK event. The event populates a combobox below (with items based on listbox's selection). Listbox is NOT multi-select. Code runs fine manually, i.e., user opens screen selects from listbox, then can select from combobox.

I now what to open and make selections from another form/screen, Screen #2. I've written code to select the proper item from Screen #2's listbox but this does NOT trigger the listbox's CLICK event for me so the combobox isn't populated so I can then make that selection from Screen #1, also. I've tried setting focus to listbox first, then making selection, but that doesn't work.

QUESTION: Is there code that selects from a listbox in a way that mimics the user clicking the selected item in the listbox?

The alternatives I can think of are:
1) Change Screen #2's listbox code from CLICK to CHANGE event, but I'd rather not.
2) Move CLICK event code to sub-procedure and then call from both listbox CLICK and Screen #2 code
3) Some sendkey string like ENTER?

Would be easier to just mimic the user click, if possible.

With frm_Screen2
'Select item type from listbox
With .LBox_Items

[Code].....

View 7 Replies View Related

Create Event Procedure Via Code

Nov 15, 2006

I'm trying to add a worksheet event via code. It works OK when I run it on its own but I get a run-time error 9 subscript out of range error when I try to run it from another procedure.

Please find attached my 2 bits of code. Any help greatly appreciated.

This is the bit that works OK on its own but not when called from my other procedure

Sub Code_To_Write_Code()

'This writes code to the new sheet

Dim StartLine As Long
Dim SheetToAddCodeTo
SheetToAddCodeTo = ActiveSheet.CodeName

With ActiveWorkbook.VBProject.VBComponents(SheetToAddCodeTo).CodeModule
StartLine = .CreateEventProc("Calculate", "Worksheet") + 1 ..............

View 9 Replies View Related

Excel 2010 :: Overflow Error 6 - When All Variables Defined As Integers

Jul 17, 2012

I have tracked down an overflow Error 6 to the following line:

dMax = Int(s * DPoints / SPoints)

Where all variables are defined as Integers. The error goes away when I define s as Long, but I don't understand why this should be required since none of the individual variables ever exceed the scope of an Integer (-32768 to 32767).

Strangely, I get the same overflow problem when I type either of the following calculations in the immediate window:

? Int(328 * 100 / 1000)
? 328 * 100 / 1000
? 328 * 100

Note that no variables are defined, so why the overflow problem? Surely Excel/VBA should be able to work with this very basic calculation without any problem, by assigning the appropriate dimension, no?

Is this a known problem with Excel/VBA?

I am using Windows 7, with Excel 2010 (updated from 2009).

View 9 Replies View Related

Reset All Numeric Variables During A Procedure?

Mar 19, 2009

Is there a way to reset all numeric variables to zero during a procedure (e.g. at the end of a loop), without having to manually set them all to zero within the code?

View 3 Replies View Related

Excel 2010 :: Selection Change Event On Text Inside Textbox?

Jun 10, 2014

As part of a program I'm writing in VBA (for Excel 2010), I have a textbox in a user form used as an interface to write a formula in cells in Excel.The resulting value of a formula from a cell is loaded up into the textbox. It would be shown in the textbox like "See 1.2 and 1.3" where the formula in the cell is

[Code].....

This is just used as an example but the principle is there. It is worth noting that I’m writing this for very inexperienced Excel users but I need them to be able to edit the string part of the formula without breaking the formula.

However where I’m struggling is to pick up a selection change event inside a text box already selected. I need to be able to check if the textbox.SelStart is within an address value or within the string in the textbox.

The event Enter won’t work if the user is already editing the textbox (i.e. typing stuff) and then clicking or using the keyboard arrow to move the cursor somewhere else inside the textbox. I don’t think the event Change is the solution either as it would mean that the user would have already typed something and as a result the formula may already be broken.

I have had a good look around and I didn’t find an event for a selection change inside a textbox. Does it exists and/or is there a way that would have the same result?

View 7 Replies View Related

Multiple Textboxes - Common Event Procedure

Apr 27, 2006

I have a userform with about 20 textboxes. I would like to use the same "data validation" procedure on each textbox as the user enters data into the form. I'll use the exit event to trigger the validation. As the user moves from one textbox to the next, the data will be validated; if it's out of range, the user will be prompted to correct it.

Is there a way to have a common event procedure so I don't have to have a separate procedure for each textbox individually? I know I can put the actual validation code in its own procedure and then call it from each event procedure but that would still leave me with 20 event procedures like:

Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ValidateData
End Sub

View 7 Replies View Related

Excel 2010 :: VBA Repeating Formula(s) In Specified Cells Based On Defined Variables?

Dec 28, 2012

In my worksheet, I know the last line of my report AND I know how many "reporting segments" (all equidistant and identical) there are in the report based on the last row using the below (which I tested in several reports in messages):

VB:
Dim vListEnd As Variant
Dim vTaskCount As Double
vListEnd = ActiveSheet.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row
vTaskCount = ((vListEnd - 5) / 22)

My "reporting segments" are ALWAYS 22 rows each and the first one always starts in row 5. Example: A document where the last row (containing an End of Report special character) is 247 would have 11 reporting segments.

Within each reporting segment, there are two different formulas needed.

For the first reporting segment located in rows A5 thru J27:

I need FORMULA1 in all cells of the range (D5:D15 dragged out to H5:H10(not 15) and D18) and FORMULA2 in cells (F20:F22,J20:J22).

Then I need to repeat that vTaskCount number of times (number of segments) and at intervals of 22 (segment repeater offset). Some reports may have 2 segments, some might have 50, but the structure is always identical.

My formulas are all pretty simple if it makes a difference (originally using FormulaR1C1 = "=RC[-1]+RC[-3]" --- but because I now know solid cell locations I suppose I don't need to make them relative, too.)

View 2 Replies View Related

Passing Global Variables / Values To A Procedure

Mar 24, 2014

I understand the use of Global variables in the sense that they can be used throughout the project. However, I also understand (I think) that unless these variables (like any) are released from memory or the values changed by some other means they will retain their values when accessed inside a another procedure regardless of where the calling procedure is Public or Private. This seems to be a convenient way to access the values of these variables without having to make ByVal or ByRef declarations in the procedure calling process.

Firstly, is my understanding of this correct? (That the variables and associated values) can be accessed from within a calling procedure without formally passing them in?

Second, even if this is true is it considered to be bad practice because the variables will store the last known value which may or may not be correct if you aren't paying attention to how the variable was last set.

View 2 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved