23. juni 2003 - 10:03Der er
17 kommentarer og 1 løsning
Nøjagtig firkant
Jeg behov for at lave et kvadrat (celle) i Excel, som er nøjagtig 6 x 6 cm. Problemet er jo, at Excel arbejder med pixels. Man kan selvfølgelig prøve sig frem, men måske var der noget, som kendte til problemet eller havde fundet noget om det på nettet.
Har engang læst noget med samme problemstilling, hvordan man konstruerer en nøjagtig cirkel (ikke en elipse) i Excel, men kan ikke lige finde linket igen.
Som jeg nævnet i spørgsmålet er det en celle, som skal være 6x6 cm. Chewie> Tror ikke det gælder for Excel. Antal pixels i højden og bredden er forskellige, så vidt jeg kan se. En pixel er meget breddere end den er høj.
Jeg har en kode liggende, som klarer problemet nogenlunde, men kun på skærmen. Udskrevet bliver resultatet anderledes. Jeg skal bruge det på papir .....
Ifølge min kode giver det 31,71 punkter i bredden og 169,5 punkter i højden. Det giver også en kvadrat på skærmen, dog ikke helte 6x6 cm (afhænger vel af skærmopløsningen), men udskrevet er den ca. 6,35 x 6,15.
Denne kode kan lave celler 6*6, men det er svært at få udskriften til at passe, da dette er afhængig af printerens opløsning. (har dog set noget ved MS, men kan ikke lige finde det igen)
Private Sub SizeCell(cell As Range, h_cm, b_cm) cell.Columns.ColumnWidth = 5.1579 * b_cm cell.Rows.RowHeight = 72 * h_cm / 2.54 End Sub
Sub testsizecell() SizeCell Selection, 6, 6 End Sub
Den kode jeg har liggende, og som altså giver et kvadrat på skærmen, ser sådan ud:
Sub SætKolonneBreddeMM(ColNo As Long, mmWidth As Integer) ' 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 SætRækkeHøjdeMM(RowNo As Long, mmHeight As Integer) ' 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 SætBreddeogHøjde() SætKolonneBreddeMM 7, 60 SætRækkeHøjdeMM 5, 60 End Sub
En nødløsning kunne være at lave f.eks en tekstboks og angive den til 6x6 cm, og derefter rette cellen til samme størrelse. Så kan man aflæse rækkehøjde/kolonnebredde.
Det er da godt du kunne eksperimentere dig frem. Jeg har testet på en deskjet og jo bedre opløsning jeg brugte, jo tættere kom jeg på 6 * 6. :-) (31*169,5)
Hvis nogen senere skulle få samme problem kan vi jo henvise til dette spørgsmål og konkludere, at der ca. går
28 punkter på en centimeter i højden og 5 punkter på en centimeter i bredden, men
at det afhænger at opløsningen på den printer man bruger :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.