By TomWhiteJnr ar an Domhnach, 08 Deireadh Fómhair 2017
Posted in Excel
Freagraí 0
Is maith 0
tuairimí 3.1K
Vótaí 0
Tá bileog oibre agam i leabhar oibre ina bhfuil níos mó ná 400 sraith, 8 gcolún agus 160 raonta cumaiscthe agus rinne mé praiseach den chuma atá air. Chuardaigh mé an t-idirlíon le haghaidh Cealla Cumaiscthe VBA Autofit. Níl mórán úsáide ag baint le haon cheann de na URLanna. Tá an macra ar an suíomh Gréasáin seo ar an mbóthar ceart ach: -
1) Bheadh ​​orm na 160 raonta cumaisc a aithint agus a chlóscríobh de láimh.
Chuir mé cuardach le haghaidh raonta cealla cumaiscthe leis.
2) Úsáideann sé ró a haon chun ríomhanna cille cumaisc a dhéanamh (Cill ZZ1). Úsáidim cló i bhfad níos mó ar chill A1 (Teideal) as a dtagann earráidí agus an airde uathfheistithe cumaisc riachtanach á ríomh.
Úsáidim cill 1 colún ar dheis agus sraith 1 faoi bhun na sonraí. (Ctrl+Shift+End, ní aimsíonn sé an chill seo)
3) Déanann sé na cealla cumaisc go léir a athríomh, mar sin laghdaigh sé airde dhá shraith ina bhfuil cealla cumaisc agus gnáthchealla, rud a fhágann nach bhféadfaí na gnáthchealla a léamh.
Ní athraím airde an tsraith ach amháin nuair a sháraíonn an airde chumaisc riachtanach an airde reatha.
4) Tá an modh chun sonraí a chóipeáil sna raonta cumaisc go dtí cill ZZ1 mícheart, bunaithe ar théacs sa raon cumaisc amháin ach gan a bheith ag cur clómhéideanna éagsúla i gcealla cumaisc éagsúla san áireamh.
Ceartaigh mé an modh cóipeála.
5) Tá an macra mall: thart ar 15+ soicind ar mo bhileog oibre.
Laghdaítear é seo go 2 shoicind má mhúchadh athnuachan scáileáin agus ar ais ar siúl ag deireadh na macra.

D’éirigh liom teacht ar locht greannach eile. Feistigh an bhileog oibre go huathoibríoch (roimh na raonta cumaisc a cheartú) agus rinne sé roinnt sraitheanna a shaobhadh. Méadaíodh airde cuid de na cealla “Gnáth", a bhí socraithe chun fillte, agus bhí siad le feiceáil mar líne (nó dhá líne) de théacs le líne bán faoi bhun an téacs. Thug cuardach idirlín le fios gurb é ba chúis leis ná gur athraigh Excel an taispeáint chun freastal ar chlónna printéir. D’aimsigh mé “obair thart”, a chuir mé leis an macra:
Méadaigh leithead na gcolún faoi chéatadán beag.
Uathfheistiú gach sraith ar an mbileog oibre.
Déan ceartúcháin ar airde an rónna chun freastal ar raonta cumaisc.
Cuir leithead an cholúin ar ais go dtí na bunmhéideanna.
D'éirigh leis sin, níl sraitheanna bána le feiceáil anois!

Shíl mé go raibh gach rud ceart anois ach fuair mé amach ansin fadhb eile. Má dhúnann mé an leabhar oibre agus má athosclaíonn mé arís é, tá na sraitheanna bána ar ais arís. D'fhéach mé ar Chomhad/Roghanna agus chuardaigh mé an tIdirlíon le haghaidh modh chun an leabhar oibre a chosc chun an taispeáint scáileáin a nuashonrú ar dhúnadh/oscailt an leabhar oibre gan rath. Bhí orm Foleabhar Oibre Príobháideach_Open() a chur leis an táb “ThisWorkbook” le glao chun an Macra a rith nuair a osclaítear an leabhar oibre.


Rogha Sonraithe

Fo-fhéachaint4Cumasc()
Dim WSN As Teaghrán 'Ainm na mBileog Oibre
Dim sht As Bileog Oibre 'Úsáidte ag "Set"
Dim LastRow As Long 'An tsraith dheireanach i ngach colún le sonraí
Dim LastRowCC As Long 'An tsraith dheireanach sa cholún reatha le sonraí
Dim LastColumn As Slánuimhir 'Líon an cholúin dheireanaigh i ngach sraith le sonraí
Dim CurrCol As Slánuimhir 'Líon an cholúin reatha
Dimlitir Mar Theaghrán 'Tiontaigh uimhir CurrCol go teaghrán
Dim ILetter As String 'Innéacs colún a haon ar dheis den Cholún Deiridh
Dim ICell As Teaghrán 'Cill colún amháin ar dheis & sraith amháin síos limistéar sonraí frpm. Úsáidtear é chun an airde chumaisc riachtanach a ríomh
Uimhir Reatha Dim CRow As Long
Dim TwN Chomh Fada 'Láimhseáil earráide
Dim TwD As Teaghrán 'Láimhseáil earráide
Dim Mgd As Boole 'Tástáil Fíor/Bréagach má dhéantar an chill a chumasc
Dim MgdCellAddr As Teaghrán 'Tá raon cumaiscthe mar theaghrán
Dim MgdCellStart Mar Teaghrán 'Litir tosaigh raon cille cumaiscthe Úsáidte m.sh. Colún B a iniúchadh le haghaidh cealla cumaiscthe, neamhaird a dhéanamh ar aon chealla cumaisc a thosaíonn i gColún A ag síneadh go colún B (measúnaithe cheana féin)
Dim MgdCellStart1 Mar Teaghrán 'a úsáidtear chun MgdCellStart a ríomh
Dim MgdCellStart2 Mar Teaghrán 'a úsáidtear chun MgdCellStart a ríomh
Dim OldHeight As Single 'Airde láithreach na sraitheanna go léir sa raon cumaisc
Diméin P1 Mar Shlánuimhir 'Comhaireamh lúb/pointeoir
Dim OldWidth As Single 'Leithead reatha na gceall sa raon cumaisc
Dim NewHeight As Single 'Airde riachtanach na sraitheanna go léir sa raon cumaisc. Nuashonraigh sraitheanna aonair go comhréireach má sháraíonn sé OldHeight
Dim C1 Mar Shlánuimhir 'Colún Lúb chomhaireamh
Dim R1 Chomh fada agus comhaireamh Rae Lúb / pointeoir
Dim Tweak As Single 'Méadú beag ar leithead an cholúin chun fadhb ró bhán a shárú
Dim nó Raon Mar Raon
Ar Earráid Téigh go TomsHandler

Application.ScreenUpdating = Bréagach 'i bhfad níos tapúla 15 soicind mura n-uasghrádaítear an scáileán ach 2 shoicind múchta.
Tweak = 1.04 'Leithead an cholúin a mhéadú 4% roimh Autofit all rows.
WSN = ActiveSheet.Name
Colúin("A:A").EntireRow.Hidden = Bréagach

'Faigh an Ró & Colún Gníomhach Deiridh sa Bhileog Oibre iomlán le Sonraí
Le ActiveSheet.UsedRange
LastColumn = Raon(Raon("A1"), Cealla(Rows.Count, Columns.Count)).Faigh(Cad:="*", LookIn:=xlLuachanna, _
SearchOrder:=xlByColumns, SearchDirection:=xlRoimhe seo).Colún
LastRow = Raon(Raon("A1")), Cealla(Rows.Count, Columns.Count)).Faigh(Cad:="*", LookIn:=xlLuachanna, _
SearchOrder:=xlByRows, SearchDirection:=xlRow).
Deireadh Le
CurrCol = LastColumn + 1 '.i. ar dheis den cholún deiridh
Má CurrCol < 27 Ansin
ILetter = Chr$(CurrCol + 64) 'Colún Innéacs
Eile
ILetter = Chr$(Int((CurrCol - 1) / 26) + 64)
ILetter = ILetter & Chr$(CurrCol - Int((CurrCol - 1) / 26) * 26 + 64) 'Colún Innéacs mura bhfuil digit dhúbailte ag baint leis an litir thríarach
Deireadh Má

'Tá Icell suite ar dheis agus faoi bhun na sonraí. Úsáidtear cill chun airde a ríomh a theastaíonn chun an raon cumaisc a fheistiú
ICell = ILetter & LastRow + 1

'Méadú ar leithead an cholúin de mhéid beag chun fabht fillte róid bhána a leigheas.
Raon ("A" & LastRow + 1).Roghnaigh
Chun C1 = 1 Go Colún Deireanach
ActiveCell.ColumnWidth = ActiveCell.ColumnWidth * Tweak' leithead an cholúin a mhéadú de bheagán chun fabht a leigheas
ActiveCell.Offset(0, 1).Range("A1").Roghnaigh ' bog cill amháin ar dheis
Ar Aghaidh

'Autoffit Rows (ní dhéanann sé neamhaird ar rónna cumaisc) le leithead colúin 4% sa bhreis chun fabht sna sraitheanna bána ar roinnt Rónna fillte a chosc
Cealla.Roghnaigh
Roghnú.Rows.AutoFit
Socraigh sht = Bileoga Oibre(WSN) 'a theastaíonn chun an iontráil dheireanach sa cholún le sonraí a aimsiú

Le haghaidh CurrCol = 1 Go Colún Deireanach
'tiontaigh uimhir an cholúin reatha go alfa (litir shingil nó litir dhúbailte)
Má CurrCol < 27 Ansin
Litir = Chr$(CurrCol + 64)
Eile
Litir = Chr$(Int((CurrCol - 1) / 26) + 64)
Litir = Litir & Chr$ (CurrCol - Int((CurrCol - 1) / 26) * 26 + 64)
Deireadh Má
LastRowCC = sht.Cells(sht.Rows.Count, Litir).Deireadh(xlUp).Row 'aimsigh an tsraith dheireanach sa cholún reatha

Le haghaidh CRow = 1 Go LastRowCC
Raon (Litir & CRow).Roghnaigh
Mgd = ActiveCell.MergeCells 'Tá cill i raon cumaisc
Má Mgd = Fíor Ansin 'Más Fíor, is amhlaidh atá
'Cad é an seoladh raon cumaisc? bain digit aonair/dúbailte amach le haghaidh thús an raoin
MgdCellAddr = ActiveCell.MergeArea.Address
MgdCellStart1 = Lár(MgdCellAddr, 2, 1)
MgdCellStart2 = Lár(MgdCellAddr, 3, 1)
Má MgdCellStart2 = "$" Ansin
MgdCellStart = MgdCellStart1
Eile
MgdCellStart = MgdCellStart1 & MgdCellStart2
Deireadh Má
Má tá MgdCellStart = Litir Ansin 'An bhfuil an chéad cholún cille Cumaisc cothrom leis an gcolún reatha
Le Bileoga(WSN)
Seanleithead = 0
Braitheadh ​​Set oRange = Raon(MgdCellAddr) 'socrú nó Raon go Raon Cumaiscthe
Do C1 = 1 Go Raon.Columns.Count
OldWidth = OldWidth + .Cells(1, oRange.Column + C1 - 1).ColumnWidth 'Carnaigh leithead na gcolún do raon na gceall (le 4% curtha leis)
Ar Aghaidh
SeanAirde = 0
Do R1 = 1 Chun oRange.Rows.Count
OldHeight = SeanAirde + .Cealla(CRow, oRange.Row + R1 - 1).RowHeight 'Carnaigh airde an ró reatha le haghaidh raon na gceall
Ar Aghaidh
oRange.MergeCells = Bréagach
.Range(Litir & CRow).Copy Ceann scríbe:=Raon(ICell) 'Cóipeáil téacs AGUS clómhéid, ní luachanna amháin
.Range(ICell).WrapText = Fillteán fillte ICell
.Columns(ILetter).ColumnWidth = Seanleithead 'athraigh leithead an cholúin ina bhfuil ICell chun aithris a dhéanamh ar an raon reatha
.Rows(LastRow + 1).EntireRow.AutoFit 'Uathfheistigh an tsraith ICell, réidh chun an airde chumaisc riachtanach a thomhas
oRange.MergeCells = Fíor 'Athshocraigh an Raon cumaiscthe ar ais go cumasc
oRange.WrapText = Fíor 'agus fillte
'Tomhais riachtanach airde don raon cumaisc
NewHeight = .Rows(LastRow + 1).RowHeight
'An sáraíonn an t-airde nua atá ag teastáil an Seanairde atá ann
If NewHeight > OldHeight Ansin
Do R1 = CRow Chun CRow + oRange.Rows.Count - 1
'Méadaigh gach sraith sa raon pro rata
Raon(ILetter & R1).RowHeight = Raon(ILetter & R1).RowHeight * Airde Nua / OldHeight
Ar Aghaidh
Eile
'go leor seomra i gcill chumaisc
Deireadh Má
CRow = CRow + oRange.Rows.Count - 1 'eile ar raon multirow, titfidh sé síos go dtí an dara sraith den raon agus déanfar an ríomh arís agus tú ag teacht ar "Ar Aghaidh"
.Raon(ICell).Glan 'Zap ICell réidh don chéad ríomh eile
.Range(ICell).ColumnWidth = 8.1 'Slachtnaigh leithead an cholúin
Deireadh Le
Deireadh Má
Deireadh Má
Ar Aghaidh
Ar Aghaidh

'Athshocraigh leithead an cholúin ag baint 4% leis (riachtanach chun an earráid fillte a leigheas)
Raon ("A" & LastRow + 1).Roghnaigh
Chun C1 = 1 Go Colún Deireanach
ActiveCell.ColumnWidth = Laghdaigh ActiveCell.ColumnWidth / Tweak 'leithead an cholúin go dtí an bunleagan
ActiveCell.Offset(0, 1).Range("A1").Roghnaigh ' cill amháin ar dheis
Ar Aghaidh
Raon ("A1").Roghnaigh

Application.ScreenUpdating = Fíor 'athrú ar an nuashonrú arís
Fo-Scoir

TomsHandler:
Application.ScreenUpdating = Fíor 'athrú ar an nuashonrú arís
TwN = Earráid.Uimhir
TwD = Err.Description
msgstr "Is gá an earráid " &TwN&" " a láimhseáil & TwD
stad
Lean
Fo Deireadh

An féidir cosc ​​a chur ar Excel cuma an taispeántais scáileáin a athrú agus an leabhar oibre á dhúnadh/athoscailt?
Féach ar an bPost Iomlán