Speed Up Macro That Adjusts Row Height & Column Width
Oct 30, 2009
This used to (and on some machines still does) work very well, but all of the sudden on my work machine, it is incredably SLOW!! The whole program takes a list of tasks and dates, and creates a wall calendar from them. Then (the offending part, below in code) looks at each cell on the wall calendar and formats it by sizing the height of a merged cell so that the entire task is displayed, then goes on to put a square around it (works fine).
The formating of the cell height/width can take up to 11 SECONDS each cell. What is happening to do this? Again, it USED to, and on some machines still does, FLY through this process. But now it just crawls. Code below, with the 3 offending lines identified.
Private Sub Fit_Height(ByVal Target As Range)
Dim NewRwHt As Single
Dim cWdth As Single, MrgeWdth As Single
Dim c As Range, cc As Range
Dim ma As Range
Application. ScreenUpdating = False
With Target
If .MergeCells And .WrapText Then
Set c = Target.Cells(1, 1)
cWdth = c.ColumnWidth
Set ma = c.MergeArea
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next
An additional item (clue?) is that, after the macro is done running, it is still unbearably slow to do anything on-screen. Grabbing the column header and changing the column width takes 5 seconds or so before it snaps to the desired width and displays correctly. Closing Excel and reopening it takes care of that problem.
More advancement (as I wait). It seems to be the Application.PageSetup that kills it. As soon as I hit the first Application.PageSetup line, the app grinds to a halt, and almost every line after that that manipulates the screen format or the page format takes 5 or so seconds EACH to process. I put them all at the end, but that really doesn't solve the problem, nor explain it, nor give me a true solution.
I'm creating a map like image with Excel, and I've set the column width and row height to certain dimensions. Now I'm entering in some text into them, and I noticed that when I added in 2 digit numbers, the column width expanded a little bit. I want to prevent this from happening, and still be able to enter in the 2 digit text (since it WILL fit, and it's expanding to keep that extra bit of space).
I need to freeze the column and row height and width for a specific area in spreadsheet, so that it shouldnt be altered in future from any one using this sheet.
I have vba code to change column width and height into mm. The code is taking alot of time to run and then hangs my excel session. The code below calls two sub routines.
Sub Change() Dim i As Long
With Application .DisplayAlerts = False . ScreenUpdating = False End With
For i = 1 To 23 SetColumnWidthMM i, 3.5 Next i End Sub...
I have tried and been searching but cannot find the answer. Is it possible to change the row height and column width for only a selected range in my spread sheet, for example, F13:I23? I am using Excel 2010.
I need to set the height of all the rows to 18.00. I need to set the width of all of the columns to 12.00, except for columns A, C, and T, which need to be at a width of 28.00.
The problem with it is, the Height and Width is arbitrary to the size of the cells at the moment. I would like to had a procedure to calculate does value. They represent the distance between the defined cells location for the image. Actually, if cells width or height change, the picture is misplaced.
I'm using a UserForm.Label to display comments which are of variable length. At the bottom of the UserForm are two CommandButtons. I'd like the gap between the Label text and the CommandButtons to be small (and preferably constant); and the CommandButtons to be at the bottom of the UserForm. This means setting the CommandButton.Top and UserForm.Height as a function of the Label.Height. The crude way I have so far achieved is to use Len(Label.Caption) as the surrogate for Label.Height but it's not very satisfactory due to word-wrap and blank lines.
I have a userform which has vertical and horizontal scroll bars. I want to set the scroll bar width and height properties to the correct value, regardless of the size of monitor screen used to look at the user form. I'm thought of using the code below in the initiliaze event for the user form:
However, this does not seem to work. I've tried adding 250 (Me.Height + 250)to each measurement, which works, but gives the user with the larger screen a very big scroll area. I wondered if there was a formula based on the application height, that would allow the scroll height to be perfect for the user form regardless of screen size?
Rico.
PS. I also use the following code to set the user form height on initialize. I don't know if that effects anything.
How do I write a short piece of code that defines the specific height and width that I want to assign to an existing chart. The code will be added to existing code that I have that formats the chart in other ways. This needs to be able to work with any active chart selected, not a specific named chart.
how to automatically set a text box size to display text contained by right-clicking the textbox and put a check in the auto-size box under "Alignment".
However I would like to set the widht of the text box and automatically adjust the height according to the number of lines of text. Is this possible by VBA code or othe means?
I m working with bar charts and as I've heard these labels can be a bit of a pain. I've got the labels in roughly the right position 90% of the time however that other 10% has me in rolling fits.
My issues 1. A label within the chart area is wrapped on two lines, how could I restrict Excel from wrappign the label 2. A Labels position covers some of the data reported and thus makes the graph messy
how could I find the position of the end of the bar and also the length of the datalabel so I could reposition it. Note I am using 2003 and that I am trying to use
for finding the position although this is only really where im getting to. finding the wrapping position and also being able to manipulate the length of the label is proving tricky.
I'm trying to make this macro work to resize images for our fashion Look Book. In theory, it should work. But of course it does not Here is the code we are using:
Code:
Sub BIGcrop() Selection.Height = 507.6 x = Selection.ShapeRange.Width y = x / 2 Z = y - 144
[Code]....
I want all my pictures to have a height of 7.05 inches and a width of 4. The height comes out different everytime depending on the scaling of the template I'm using. I need it to adjust accordingly. I'm open to having the image move into merged cells, as long as it will first adjust the height and then crop the sides (so the orientation stays the same).
Finding the Column with the MAX Height in comparison with other Columns of UNEVEN Height
I need two things :
1. I have several columns starting from Column B till Column F, each column having values starting from the third ROW.
Ex:-
Lets say Column B contains two values in B3 and B4, Col C three values in C3 C4 and C5, Col D four values D3,D4,D5 and D6, Col E two values in E3 and E4, Column F five values F3,F4,F5,F6 and F7.
So, the answer is F3:F7.
2.I am using 10^{4,3,2,1,0} in a particular portion of a formula, Now the number of elements in the array or in the Curly Braces depends on the number of Columns filled from Column B as explained in the Point 1.
Now, since I have five columns under consideration I have this order as mentioned here {4,3,2,1,0} , I would like to know whether I could make this dynamic, as in if there were only four columns then this would be {3,2,1,0} and if more this array could self-fill and expand..
If that's possible, then how do we use it in the formula, Is it by the virtue of the INDIRECT function?
Is it possible to adjust a cells' column width without the whole column width changing? EXAMPLE...I'm looking to lock rows 1-41 at certain column widths and change the column width as needed from rows 42 and below.
my existing macro, as the run takes to much time to complete. (at least 20min) I've already tried several loops, but no one worked for me. Following situation: There are two excel files, entries in column 73 - 85 will be copied from WorkbookRust to the other workbook if the numer in column 5 is the same. Not every cell within this columns contains data, so the macro should automatically jump to the last entry in each of the above mentioned columns, instead of predefine the range as you see in the code below. After the data is copied to the other workbook, it will be filtered acc. to Sub FilterMain and then copied back to WorkbookRust. As already said, the whole thing works, just to lame.
Sub Allmacros() Dim WorkbookRust As String WorkbookRust = ActiveWorkbook.Name ChDir "C:Documents and Settings vogtMy DocumentsRüstplausch" Workbooks.Open Filename:= _ "C:Documents and Settings vogtMy DocumentsRüstplauschCH_Revenue_2008.xls" Sheets("Main_Overview").Select Windows(WorkbookRust).Activate Application.run ActiveWorkbook.Name & "!UpdateEntries" Application.run ActiveWorkbook.Name & "!FilterMain" 'not ask to overwrite existing file Application.DisplayAlerts = False Workbooks("CH_Revenue_2008.xls").Save Workbooks("CH_Revenue_2008.xls").Close End Sub
How would my macro below be edited to keep the column sizes the same as they are in the original sheet?
Sub NewUploadFile() Workbooks.Add ThisWorkbook.Worksheets(3).Range("A2:K300").Copy Range("A3").PasteSpecial Paste:=xlPasteValues Range("A3").PasteSpecial Paste:=xlPasteFormats Columns.AutoFit End Sub
I needed to match the width a merged area of seven columns to a single column width (for row autofitting). Adding the column unit values and setting the single column to that value produced a significantly narrower width.
The documentation mentions that the column width unit is scaled to the font type and size and the absolute width is given in points.
This is set by the normal style setting in Excel Options or by VBA application.standardfontsize = 8 (in this case).
For instance, ten columns of Arial font 8 at 8.5 units you would think to be equivalent to a single column of 85 units. In points, the difference is 420 vs. 386.25, or 33.75 points.
Well, the standard character zero has a width at this setting of 4.5 points and 1 unit is 8.25 points, leaving 3.75 points for margins.
Then (10-1) margins allowances time 3.75 points resolves the difference.
Determining the margin allowances is straightforward, and reveals that the gradation with size is stepped by MS design. For instance, sizes up to 11 use 3.75 points for margins and increasing points for characters (except between 9 & 10). Sizes 12 through 18 use 5.25 points, 20 & 22 use 6.75, 24 & 26 use 8.25, etc.
I have created a table for this purpose, however I rarely use a "normal" other than 8, so I can probably use that set in programming.
I am having a small problem with microsoft excel 2007.the problem is that: my excel 2007 cannot display tooltip of the column width when I keep and drag left mouse
Show tooltip of the column width as attached file.
I also tried many ways to find settings of advance menu. But cannot.
I'm trying to create a vb to get all columns on my sheet to have a fixed width. If I run my sub all columns go back to the set width. But I want the width to reset when the width is changed.
I set a column width to some integer like 10, and the next time I open the file it has changed to something like 9.89. Is there some configuration that prevents this from happening and leaves my setting alone?
I have an MS Access Data link (parametrized query) set up in Column A. (Specifically A5:B85). However, every time I change the value in cell G2 (the source of my A5 result), the width of column A always changes. Is there a way for me to get column A to "freeze" to a width size of my selection?
the Ruler across the top that allows you to adjust the column widths (A B C D etc). Is it possible to insert another Ruler, further down the same page, to allow you to adjust the column width differently. if so how. On Excel 2007
Lets say i type for now... A1 = USA B1 = Philippines
and then later A1 = dog B1 = cat
Is there a way that the width would automatically adjust even as I change the values of the given cells; meaning, if a word is long, the width will automatically adjust "longer", if a word is short, then it will automatically adjust "shorter".
I know how the "AutoFit Column Width" works but I don't want to press that every time my values change (words becoming shorter or longer).