Ensure Code Understands Object It Should Relate To
Aug 14, 2008
I have written some code that copies certain cells from a spreadsheet constructed form back to a master spreadsheet database. The idea being to prevent users of the form from accessing the database and mucking it up. I write it the long way round and am now trying to modify it to not have to open and close the database everytime BUT whenever I change it I get errors that I think relate to the code not understanding the change of object...
' 3. send updated data to the database (all yellow boxes will update)
' set parameters for cells to copy from
Dim r As Long, e4 As Long, e6 As Long, e18 As Long, e20 As Long, e22 As Long, e24 As Long, _
e26 As Long, e28 As Long, e30 As Long, e32 As Long, e34 As Long, e36 As Long, e38 As Long, _
e40 As Long, e42 As Long, e44 As Long, e46 As Long
r = Range("D2")
e4 = Range("B4")
e6 = Range("B6")
e18 = Range("B18")
e20 = Range("B20")
e22 = Range("B22")
e24 = Range("B24")
The little blocks of code go on for 17 open/closes!
I have a workbook that starts off with the following sheets:
MAIN_PAGE - Where filter criteria is selected via checkbox and PLOT button
RAW_DATA - unfiltered raw data
After running a series of macros tied to the PLOT button, two new sheets are created:
FILTERED_DATA(HIDDEN) - where the filter criteria from the MAIN_PAGE is applied, and the filtered data is stored.
CHART - The plot of the hidden FILTER_DATA sheet.
Every time the PLOT button is pressed, the the macro searches for the FILTERED_DATA and CHART sheets, and if present, clears and overwrittes with the new appropriately filted data. This works and suits the user's needs 95% of the time. However....
QUESTION If the user decides to keep the old CHART and FILTER_DATA as well as the new FILTER_DATA and CHART, I need something to differentiate the two charts and data sheets. My thought was to have the user rename the CHART. The problem is that because the FILTERED_DATA sheet is hidden (and has to stay that way), how can the name change of the CHART be carried over onto the hidden FILTERED_DATA sheet, therefore keeping the plot and it's data in tact? For example, if I append the name CHART with a 1 to make it CHART1, how do I automatically change FILTERED_DATA to FILTERED_DATA1?
I am trying to write some code that is linked to a Command button. The code in the command button is in my workbook called "MF Consolidated ACTUAL DAILY REPORT - Dev.xls" but then I have another workbook called "MF BANK EXPOSURE SUMMARY.xls" that I want to do some work with - namely delete blank columns and it is here that I am having the problem.
My problem is this: my code module is contained in my project "MF Consolidated ACTUAL DAILY REPORT - Dev.xls" and the columns that I want deleted are in the "MF BANK EXPOSURE SUMMARY.xls". Now even though I believe I have activated the "MF BANK EXPOSURE SUMMARY.xls" workbook the action, that of deleting the blank columns is performed on the "MF Consolidated ACTUAL DAILY REPORT - Dev.xls" workbook. Why?? Here is the code that I am using:
Sub Commandbutton() 'ASK FOR DATE AND SET IT IN THE REPORT Workbooks("MF Consolidated ACTUAL DAILY REPORT - Dev.xls").Worksheets _ ("Seg and Non Seg Bank Summary"). Range("I1") = Application.InputBox("PLEASE ENTER REPORT DATE IN THE DD/MM/YYYY FORMAT")
'ACTIVATE MF BANK EXPOSURE SUMMARY Workbooks("MF BANK EXPOSURE SUMMARY.xls"). Sheets("Seg and Non Seg").Activate Dim iCol As Integer Dim Isheet As Integer With ActiveSheet.UsedRange................
I am using Excel 2008 for Mac. I have a spreadsheet that I am essentially using as a simple cheque ledger so that I can keep track of who I have written cheques to, for what amount, and what has already cleared. I have a the following columns:
Name Date Written Cheque Amount Cleared?
In the 'Cleared?' column I mark an X when it has cleared the bank. I'm trying to find a way to get the SUM of the whole 'Cheque Amount' column that hasn't cleared (ie: has nothing in the 'cleared' column).
Is it possible to use VBA to call an existing Excel function? I want to have code that calls up the "Insert - Object" popup window in the same manner as it would if the user clicked the toolbar.
I'm trying to copy all the sheets into a new workbook but the following code does not copy the workbook object called "ThisWorkbook", it does copy ALL the other sheets however.....
The "ThisWorkbook" object appears at the end of the list names "Microsoft Excel Object" after all the sheets are listed in the VBA project explorer, like this.....
way i could stop my sheet from flickering everytime i change my cell selection via keyboard/mouse. i checked and this problem is only with code below that i run in view code of my sheet...
PHP Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim str As String Dim cboTemp As OLEObject Dim ws As Worksheet Set ws = ActiveSheet On Error GoTo errHandler
If Target.Count > 1 Then GoTo exitHandler If Target.Address(False, False) = "Z3" Then Call GoToMatch Exit Sub End If
A while ago I was playing with an excel balanced scorecard which used various on change events of the cells to change the colour of an object (circle). Recently I have been looking at this again and have learned that I can lose some of the .select tags to improve & reduce the code. What we have now is 20 different PI's, each with an oibject assigned, called 'PISHAPE1' through to 'PISHAPE20'. Originally, the code checked every single controll cell, which could be either red, amber, green or no data, which would be black.
What I have works but I am sure there is a more efficient method, rather than repeating the case red, amber, green etc. The first part of the code is repeated 20 times for the different objects, just changing the shape number.
Dim cel As Range For Each cel In Range("controlcell1").Cells Select Case cel.Text Case "Red" ActiveSheet.Shapes("PISHAPE1").Fill.ForeColor.SchemeColor = 10 Case "Green" ActiveSheet.Shapes("PISHAPE1").Fill.ForeColor.SchemeColor = 3 Case "Amber" ActiveSheet.Shapes("PISHAPE1").Fill.ForeColor.SchemeColor = 51 Case "No Data" ActiveSheet.Shapes("PISHAPE1").Fill.ForeColor.SchemeColor = 0 'etc. Case Else End Select Next
SO following on from above, the next code for PISHAPE2 is as follows:........................
Is it possible to make a textbox or combobox the reference of a formula in a cell? I know that you can just do this on VBA, but if possible I don't want to do that in this particular case.
I recently wrote the following macro to drive several dimensions in a Solidworks assembly using cell values in excel. The strange thing is that I witnessed the macro work on several occassions with the exact same code, however now it always produces "Run-time error 91: Object variable or With block variable not set". I read in another forum that macros in excel can become fragmented with repeated editing, and unloading all the macros then loading everything back up again actually worked for a little while, however I would rather fix an issue with the code if there is one:
Note: In Debug mode the lines
Part.Parameter("D1@Sketch1@CORE INNER.Part").SystemValue = _ Sheets("AEM Core and No Load Loss").Range("B4").Value / 1000
are highlighted
Sub Generate_Core() Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager Part.Parameter("D1@Sketch1@CORE INNER.Part").SystemValue = _ Sheets("AEM Core and No Load Loss").Range("B4").Value / 1000 Part.Parameter("D2@Sketch1@CORE INNER.Part").SystemValue = _ Sheets("AEM Core and No Load Loss").Range("B5").Value / 1000................
I need to identify the object that is triggering the current running macro. For example, i have 4 buttons say button 1 to 4 that all do almost the same thing. I have written 4 different macro for all 4 buttons but i want to simplify my code so that i can have a better leaner code by only using 1 macro for all 4 buttons. simply put is there a way to say identify which button/shape i pressed:
If "identity of button pressed" = "Button1" Then execute some code Else End If
I have a macro that checks if a username is in a particular list, and if it is, it unhides certain sheets in the workbook.
The code runs fine if I just run it as a macro or off a command button, but I am trying to execute it when the workbook opens and I keep getting a 57121, Application defined or object defined error.
The code is below;
Private Sub Workbook_Open()
DoEvents
Dim Res1 As VbMsgBoxResult Dim GovRng As Range
For Each GovRng In Sheets("Map").Range("GovernanceMembers") If GovRng.Value = Application.UserName Then Goto 111 Next GovRng
I have a sample spreadsheet (uploaded to this thread) in which I have 10 command buttons named 'Video 1' to 'Video 10'. Next to these buttons is a Windows Media Player Object. I require the code that upon clicking any of the video command buttons, the relevant video is opened and shown in the windows media object within the same sheet (sheet1).
I'm sure the code for each button will be the same apart from the cmd button reference number/name and the link to the file to be played.
If we assume all the videos are called as per their buttons i.e. Video 1.wmv, Video 2.wmv ... Video 10.wmv; and the location of these files is under 'C:Films', can someone post up some code for button 'Video 1' making it clear which variables to change for linking to the different files.
My form has a combobox with three options "Withdrawal" "Deposit" "Fee". I want to make sure that whatever number a user puts into a textbox, if they select "Withdrawal" or "Fee" that number will be converted to a negative number, and if they select "Deposit" it will be positive. I have written the following code and am just wondering if there is some super slick way of doing it other than an if statement.
I enter for example in a cell : 0625-C0/01 sometime 0 is entered as O a letter and not zero.Is there a way to ensure that only 0 (zero) is allowed in that string using data validation rules.
I have five text boxes on a user form. I would like the 5th box to always equal 100 - the Sum of the other boxes, and never go below 0.
In other words, the text boxes are representing percentage breakdowns - so to validate the percentage entry in each box i want the last box to 'count down' from 100 as the percentages are distributed amoungst the other boxes. This box will also be a percentage figure, so is crucial it has its own box (rather than just saying these four boxes have to total 100) i hope this makes sense!
I have tried a code along these lines (see below) - (adapted from this forum but couldnt get it to work) I also found a version where one poster used a command to change the 'value' from string to numbers - but have been unable to find that again.
Private Sub txtbox1.change() txtbox5 = 100 - (CCur(txtbox1) + CCur(txtbox2) + CCur(txtbox3) + CCur(txtbox4)) End Sub
I have largish workbooks (10MB) with a variety of formulas and lookups to generate tables and charts. Calculation is ALWAYS set to Automatic, but sometimes (not always) the formulas fail to update when values are changed. Sometimes F9 will force calculation, sometimes Ctrl + Alt + F9, sometimes (especially with charts) I have to close the workbook and reopen before they will update. The workbooks contain macros but none are running when this happens. A search of your forum indicated that this question has arisen several times before, but I haven't seen a definitive answer.
I need my program to: - find the cell containing the string "Datum/Tid" - record the column and the row of the found cell in two variables lCol and lRow
Here is my
Sub test()
Dim rFoundCell As Range Dim lRow As Long Dim lCol As Long
'Find method of VBA Set rFoundCell = Range("A1") Set rFoundCell = Worksheets("Sheet1").Range("A1:Z50").Find(What:="Datum/Tid", After:=rFoundCell, _ LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False)
'for anyof the two lines down I get the message "object variable OR block variable not set"
I have two enormous lists of dates. How do I automatically compare them to ensure the date on one comes after the date on the other one?
They're formatted as dates. Christmas Day 2000 (UK) did say 25/12/2000, and then when I reformatted it it automatically changed to 25 Dec 2000, and so on.
I'm looking for a way to ensure that users of a spreadsheet have filled in all required cells. VBA code which will prompt if a cell is blank which will activate on a button click
All cells are 'Named ranges' so hoping there's a way in which I can point to all named ranges and if they're blank display the below error message.
"Please ensure you have filled in all required fields"
I have created a userform to add a new user and his/her password to a list of usernames and passwords (which i use for login procedure). Now, as the login name must be unique, I would like the userform to disallow existent usernames from being added. How do I go about doing this?
I have a workbook containing several sheets, each sheet has a large number of ActiveX check box controls on it.
The controls are presented in groups of three to capture responses to a question (Y/N/NA). If one of the three check boxes is set to True, the other two associated check boxes must be set to False.
What I want to do is avoid having to have an On_Click event sub for every single check box.
I have written a function that will handle updating the related check boxes but I am unsure how to call this function, passing it the name of the clicked Check Box whenever any check box is clicked.
Here is my current code with an On_Click event being used to call the function:
Private Sub chk100_01Y_Click()
' Want to replace this with a dynamic sub that will be invoked ' when any Check Box is clicked and pass the name of that Check ' box to the function
it's been a long time I've posted here. I need some advice on how to make words blinking in excel. I have problem in sending proper instructions in my staff in my excel. So I think that blinking words will get my staff attention.I have search the forum but can't find any similar discussions.
When a user inputs a month and then a day, I want to be able to check to make sure that the day entered is possible in that given month. Is there a way to do that which is not too complicated?