24. august 2008 - 12:22Der er
23 kommentarer og 1 løsning
hvordan kan man angive fast bestemt størrelse på celler??
Hejsa,
Jeg er igang med et forsøg hvor jeg vil bruge excel som nummererings program til noget gravering. Men jeg har lidt problemer med at definere fast størrelse på cellerne.
eks. så vil jeg gerne have en række (rk1) og 18 kolonner (A-R).
Jeg har nogle emner som måler 7,9x42 mm disse har jeg 18 som skal ligges op efter hinanden, det er disse som jeg nu vil have gengivet størrelses vis på celler, således at række 1 skal være 42mm (hvilket jeg har fundet frem til 120) og cl A-R skal være 7,9 mm (hvilket jeg på en eller anden måde har regnet mig frem til 3,41)men mit problem er at jeg ikke kan få den til at fast holde de 3,41, den angiver istedet 3.43, følgelig fordi det har relation til punktstørrelse/pixel, men er der ikke en metode hvorved man kan force den til at definere bestemt størrelse???
Håber i kan forstå mit problem, ellers så spørg så skal jeg besvare efter bedste kunnen.
Sub SetColumnWidthMM(ColNo As Long, mmWidth As Double) ' changes the column width to mmWidth Dim w As Single If ColNo < 1 Or ColNo > 255 Then Exit Sub Application.ScreenUpdating = False w = Application.CentimetersToPoints(mmWidth / 10) While Columns(ColNo + 1).Left - Columns(ColNo).Left - 0.1 > w Columns(ColNo).ColumnWidth = Columns(ColNo).ColumnWidth - 0.1 Wend While Columns(ColNo + 1).Left - Columns(ColNo).Left + 0.1 < w Columns(ColNo).ColumnWidth = Columns(ColNo).ColumnWidth + 0.1 Wend End Sub
Sub SetRowHeightMM(RowNo As Long, mmHeight As Double) ' changes the row height to mmHeight If RowNo < 1 Or RowNo > 65536 Then Exit Sub Rows(RowNo).RowHeight = Application.CentimetersToPoints(mmHeight / 10) End Sub Sub ChangeWidthAndHeight() Dim I As Long SetRowHeightMM 1, 42 ' Række 1 højde i mm. For I = 1 To 18 SetColumnWidthMM I, 7.9 ' 18 Kolonners bredde i mm. Next End Sub
tak men det havde jeg også selv læst, og det er jo netop det som er mit problem, men desværre ikke noget som kan løse mit problem, nu er det heller ikke sikkert at det kan løses som jeg gerne vil have det men tænkte da lige at jeg lige måtte høre ekspertene først før jeg giver mig i kast med nødløsninger eller helt bortkaster idéen. mvh dsj
Hov kabbak, det der du skrev til sidst ser da lidt interessandt ud, nu er jeg ikk så skrap til VBA, men går ud fra at jeg kan lave dit eks. på et ark, ved at højreklikke på ark og så vis programkode og så ellers kopiere dit eks. ind....eller hva??
Jeg har lige sat det ind og det fint ud den ændre fint nok. Og nu skal jeg lige printe ud og måle felter, evt. ligge emner op oven på udprint for at se om det passer, men har lige opdaget at jeg ikk har emnerne her, så det bliver først mandag jeg lige vender tilbage, men det ser absolut lækkert ud, vender lige tilbage imorgen forhåbenligt med point til dig.
ok. men ellers retter du her, det er 42 for rækkehøjden og 7.9 for kolonnen, husk at bruge punktum, som decimaladskiller.
Sub ChangeWidthAndHeight() Dim I As Long SetRowHeightMM 1, 42 ' Række 1 højde i mm. For I = 1 To 18 SetColumnWidthMM I, 7.9 ' 18 Kolonners bredde i mm. Next End Sub
Hejsa, så har jeg lavet en udprint af tabelen og prøvet og sammenligne med emner, og det passede ikke helt må jeg sige.....det virker ikke som om at det er mm den måler i, det bliver ihvertfald ikke rigtige mål på udprint, f.eks så er højden på række angivet til 42, men er faktisk kun omkring 40,8 mm og kolonner fra A-R (18 stk) skulle være 7,9 mm pr. stk hvilket udregnet skulle blive 142,2, men faktisk målt er der fra A-R ca 149,5 mm, altså det ene sted bliver det mindre og det andet sted større og bliver naturligvis meget større da fejl tolerance bliver 18 gange større på kolonner. Nongen idé om hvad det er som ikke lige passer?? - Mener det ser ikke ud som om at den tæller mm, men nok snare punkter eller pixel eller ihvertfald runder af til nærmeste punkt eller pixel størrelse (hvis du forstår hvad jeg mener)
Nu har jeg prøvet mig lidt frem, sådan nærmest stepvis baglæns for at se om jeg kunne ramme i omegnen af de 142,5 - 143,5 , men det opføre sig meget mærkeligt på nogle steder kan et step på 0.1 pludselig blive til flere mm i ændring på udprint. Besynderligt, men jeg har studset lidt over om det kan have noget at gøre med at det er komma tal vi skriver i koden, men det er vel derfor der er brugt Double istedet for integer eller hva..... er ikk så skrap til VBA, men har da sinde at lære hvad jeg kan :-)
Ja, det har jeg også selv tænkt på, og det ville da også være naturligt nok at der ville være en lille tolerance der, men det ændre jo ikke på at der pludselig er flere mm til forskel, til trods for at der kun er gået et step på 0.1 mm op eller ned.
Jamen denne side beviser jo netop at man godt kan omregne disse værdier, så problemet må jo ligge i hvordan programmet vil tolke resultat her af, som jeg tidligere har nævnt så virker det som om der bliver afrundet op eller ned alt efter størrelse.
Du kunne jo selv prøve koden på excel og lave ramme omkring og så printe ud og se hvad du måler dig frem til
Hej Så er jeg tilbage igen, har imellemtiden forsøgt mig frem og tilbage uden gode resulter. Så det er blevet til at jeg er gået over i Word istedet og har lavet en tabel der, da word har mulighed for at opsætte rammer precis og efter fast størrelse i centimeter, det har excel ikke, da den altid vil tage antallet af tegn som sakl være i cellen i betragtning og derefter ændre størrelse.
Jeg aner ikke rigtig hvem som skal have point, for jeg syns du gjorde et godt forsøg ;-) så smid du bare et svar.
Jeg vil nu oprette et spm over i word delen istedet, for mangler lige lidt hjælp til noget auto indsættelse af dato+ nummer (som skal genereres)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.