Mikael63 Posted August 28 Share Posted August 28 Jag antar att om detta går att lösa så är det i Excel. Jag arbetar med långa textsträngar (i just Excel) och kopierar därifrån och in i CAD. Där finns en begränsning hur lång textsträngen kan vara innan den ramlar utanför en ram. Antal tecken kan inte ensam utgöra beräkningsgrund då vissa tecken, som I, eller en punkt, ju tar mindre plats än W. Jag skulle vilja få en sådan text, som är för lång, markerad, med färg eller i en separat kolumn. (jag har texten i H och där är den sammansatt av E & G) Font/textstorlek i Excel är inte samma som i CAD. I CAD är dock Fonten och texthöjden fast. (I Excel kan den vara godtycklig) Höjden är 2.5 (och där är det millimeter) och fonten som används är arial.ttf normal västerländsk. Finns det kanske känd data hur inbördes förhållande är vad gäller bredd för Arial? När jag testar ser jag att jag får plats för AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA vilket jag får till 45 st. Quote Link to comment Share on other sites More sharing options...
OveS Posted August 29 Share Posted August 29 Korta svaret; du kan inte få fram efterfrågad information, fysisk höjd/bredd-mått på en given textsträng i Excel med dess inbyggda funktioner. I teorin kan du göra som följande; Skriv ut en textsträng med enbart samma bokstav, säg 20 tecken i Arial 10pt eller vad som kan motsvara 2,5 mm i höjd, och mät längden och dela med antalet tecken. Detta gör du med såväl versala som gemena tecken samt siffror om det behövs. Du får då en datatabell för varje teckens fysiska mått och det är bredden du vill åt. Nu kan du göra en formel som adderar de fysiska måtten för varje tecken för den textsträng du vill använda. Detta blir dock inte helt perfekt eftersom i tyopgrafiska sammanhang tillkommer även det som kallas knipning / eng: kerning, och som påverkar textens fysiska storlek. Läsvärda länkar: https://onlineprinters.co.uk/magazine/font-sizes/ https://www.researchgate.net/figure/The-Conversions-of-Point-Sizes-to-Millimeters-in-Times-New-Roman-Arial-Helvetica-and_tbl4_365853631 https://en.wikipedia.org/wiki/Kerning Quote Link to comment Share on other sites More sharing options...
Mikael63 Posted August 29 Author Share Posted August 29 Samma bokstav? Det blir ju avsevärd skillnad i längd om jag skriver 20 st i jämfört med 20 st w iiiiiiiiiiiiiiiiiiii wwwwwwwwwwwwwwwwwwww Mät längden? Var/hur i Excel? En annan infallsvinkel kanske: Texten i H är sammansatt av mig och inte av den som skapat dokumentet. Jag kan se till att typsnittet i H ska vara exempelvis Arial Normal 10 eller motsvarande som lirar med övrig text. Ett test visar att 45 st A behöver en kolumnbredd som är 58. Jag har även verifierat det med en "riktig" text, ser att tecken utanför cellen även hamnar utanför området i CAD. Jag skulle då kunna ha ett makro som; markerar H, ändrar till Arial Normal 10, sätter kolumnbredd till 58. Då kan jag se om texten ryms med lite marginal eller om den går nära cellen. (Ett test i skrivande stund ger resultatet att jag har fel någonstans, men principen torde vara rätt) Fint hade då varit om man kunde flagga upp sådan text, ex. med en avvikande färg, ungefär som man kan få röd text för minusvärden. Quote Link to comment Share on other sites More sharing options...
Mikael63 Posted August 29 Author Share Posted August 29 Nej, något knepigt blir det med ovanstående Calibri 9 är det i det faktiska bladet. 45 st A behöver kolumnbredd 45 i Excel. 45 st A passar precis i CAD 59 st varierande tecken behöver kolumnbredd 50 i Excel. 59 st varierande tecken passar precis i CAD. Detta med kernel som ställer till det då kanske? Quote Link to comment Share on other sites More sharing options...
Solution MH_ Posted September 2 Solution Share Posted September 2 Kopiera textsträngen till en tom kolumn (bestämd cell) i ett annat blad där du ställt in rätt typsnitt. Be excel autoanpassa kolumnen (som att dubbelklicka på kanten). Tag kolumnens bredd och kopiera in värdet i huvudbadet. Loopa järnet Problem: Excel ger lite marginal till cellen när du autoanpassar. VBA ger bredden i punkter (beroende av upplösning?). Excels VBA har ingen "PointsToCentimeters" funktion så du måste utgå ifrån bredden i punkter. Jag antar att du helt enkelt får experimentera för att lista ut vad gränsvärdet är och om marginalen är konstant. Sub tst() Dim rKällcell As Range Dim rTestcell As Range ' Antar att du står i den första cellen i kolumnen du vill testa när du börjar (sen loopar vi vidare). Du kan ändra till en fast adress om det är smartare Set rKällcell = ActiveCell ' Skapa "Testblad" manuellt och sätt typsnittet i kolumn A till det du vill ha (arial 10, whatever). Behöver inte vara samma bok men det är det i mitt exempel Set rTestcell = Worksheets("TestBlad").Range("A1") 'Loopa igenom varjer rad. Kopiera värdet till A1 i Testblad och be excel autoanpassa. Do rTestcell.Value = rKällcell.Value rTestcell.EntireColumn.AutoFit 'Kopiera kolumnbredden i testbladet till cellen ett steg till höger om värdet (anpassa till dina behov)? rKällcell.Offset(0, 1) = rTestcell.ColumnWidth 'Flytta ner källcellen ett steg tills du stöter på en tom cell Set rKällcell = rKällcell.Offset(1, 0) Loop Until rKällcell = "" rTestcell.value="" End Sub Ähh testa och se om du får fram något användbart. Sen kan du använda villkorsstyrd formatering eller liknande för att flagga upp celler som har för högt breddvärde. 1 Quote Link to comment Share on other sites More sharing options...
Mikael63 Posted September 2 Author Share Posted September 2 Tack! Det ser ut som jag kan använda denna. 😀 (Egna noteringar) Jag kan alltså ha godtyckligt bladnamn och godtycklig font där jag klistrar in mina värden. Jag måste ha kolumnen till höger (om texten som ska mätas) tom. I 'Testblad' ställer jag in font & storlek. Loop Until rKällcell = "" måste vara Loop Until rKällcell = "STOPP" och jag måste komma ihåg att skriva STOPP på sista raden. (Jag har tomma rader) Med testade skarpa texter och Arial 10 verkar gränsen vara vid '60' och jag kunde då även hitta en text som jag hade förkortat i onödan, den rymdes visst som den var. Nu verkar det som att jag kan få flytta de första nio tecknen till ett annat fält varför det förhoppningsvis blir färre strängar där jag måste hitta på en begriplig förkortning. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.