Just nu i M3-nätverket
Gå till innehåll

short

Medlem
  • Antal inlägg

    136
  • Gick med

  • Senaste besök

Allt postat av short

  1. Jag har ett VBA-program som är skrivet i Excel 97 2003. Det har gått bra att köra tom Office 2010. Nu har Excel 2013 kommit och när man då öppnar programmet körs det i kompabilitetsläge. När jag ska fylla i textrutorna i ett inmatningsformulär och använder tab-tangenten flyttar sig kursern till nästa ruta vilket jag programmerat. Problemet är att det jag matar in blir mikrotext som inte går att läsa. Texten blir normalstor igen om man åter klickar på tab-tangenten eller klickar någon annanstans i formuläret. Klickar man igen på samma ruta blir det Mikrotext igen. Om man konverterar programmet gör det ingen skillnad utan samma mikrotext blir resultatet. Till saken hör att Excelversionen är slö och ofta inte svarar. Något sådant förekommer inte om jag öppnar en ny bok som inte är gjort i Excel 97 3003.
  2. short

    Join

    Det funkade! TACK
  3. short

    Join

    Jag har haft en arbetsbok som innehöll följande formel för att omvandla personnummer ååmmdd-nnnn till åååå-mm-dd =OM(C5="";"";(SAMMANFOGA(19;EXTEXT(C5;1;2);"-";EXTEXT(C5;3;2);"-";EXTEXT(C5;5;2)))) Nu vill jag göra samma sak med VBA-kod och har skrivit Sheets("Aktuella personer").Cells(Rad + 5, 4) = Application.WorksheetFunction.Join(19, Mid(Sheets("Aktuella personer").Cells(Rad + 5, 3), 1, 2), _ "-", Mid(Sheets("Aktuella personer").Cells(Rad + 5, 3), 3, 2), "-", Mid(Sheets("Aktuella personer").Cells(Rad + 5, 3), 5, 2)) men får felmeddelandet "objektet stödjer inte egenskapen eller metoden". Var ligger felet?
  4. Jag har 15 CheckBoxar numrerade 1-15. Jag vill ändra några boxars värde i ett program. Jag ver bara inte hur jag ska nå dem. Om jag skriver Sheets("Blad1").CheckBox(t) så går det inte. Jag vill alltså låta värdet på t styra vilken box jag vill nå.
  5. Jag vill öppna ett antal filer som kräver lösenord för att öppna. Jag har en förteckning över vilka lösenord filerna har där jag letar rätt på det korrekta lösenordet. När jag sedan använder koden (Lösen=aktuellt lösenord) Workbooks.Open FilNamn(i), Lösen så kommer i alla fall fram rutan där Excel begär lösenord. Jag vill inte att denna ruta ska komma fram utan att filerna ska öppnas denena efter den andra.
  6. Jag gjorde så här: Private Sub TextBox16_GotFocus() If Mid(Sheets("Registrering av nytt register").TextBox16, 1, 1) = " " Then Sheets("Registrering av nytt register").TextBox16.Value = "" End If End Sub Det verkar fungera. Tack!
  7. När man hoppar till en textruta med tabtangenten eller när man markerar en textruta direkt ställer sig markören ibland på position två och därmed hamnar en blank i position ett. Antag att textrutan är avsedd för 8 pos datum. När man då har skrivit in 7 siffror går det inte att skriva in den sista. Är användaren ovan så leder det till en felanmälan. Min fråga är om det finns något sätt att försäkra sig om att markören alltid står på första positionen i textrutan innan man skriver?
  8. Jag har en textsträng som innehåller text, länk till en webbsida och länk för att skicka ett mail till en adress. Länken till webbsidan blir klickbar men inte adressen. Exempel: MinSträng="Om du vill läsa mer http://www.smb.nu skicka sedan mail till minadress@comhem.se" Range("A1")=MinSträng Finns det något sätt där även adressen blir klickbar. OBS Strängen innehåller text av varierande längd så det är inte möjligt att med ett särskilt kommando lägga adressen i en viss position.
  9. Om man låser en sida två ggr av misstag då är den låst. Om man låser en arbetsbok två ggr av misstag då är den öppen. Hur kommer sig det?
  10. "Om något går att lösa med formler/verktyg i Excel använd då dessa. VBA är långsamt." Det var en överraskning att man ska använda formler som syns i presentationslagret och inte bakom VBA-gardinen. När jag flyttat några Letarad från arket och gjort om dem till funktioner föreföll arbetsboken att krympa något. Däremot med Sum verkar det som om storleken inte förändrasmöjligen blr en aning större när man har funktioner i VBA istället för formler på bladet.
  11. Intressant lösning som jag ska testa. Jag antar att Factors1 är ett namn under vilket de olika argumenten samlats. En fråga bara. Är vinsten snabbare bearbetning eller minskat behov av minnesutrymme för arbetsboken (färre argument) eller båda delarna? Jag har nämligen problem med stor arbetsbok.
  12. Bladet IT innehåller internpriser på olika IT-tjänster som gäller ett år i taget. Priserna är alltså fasta och kan enkelt bytas ut genom att ändra på bladet IT. Om jag trodde att jag skulle lägga till eller ta bort celler på detta blad (vilket är mycket osannolikt) skulle jag använda namn. Nu gör jag inte ens det eftersom bladet är stabilt. Jag har nu ändrat functionen till detta: Function SummaIT(IT1, IT2, IT3, IT4, IT5, IT6, IT7, IT8, IT9, IT10, IT11, IT12, IT14, Person As Range) If Person = "" Then SummaIT = "" Exit Function End If SummaIT = Application.WorksheetFunction.Sum(IT1 * Sheets("IT").Range("B21") + IT2 * Sheets("IT").Range("B23") _ + IT3 * Sheets("IT").Range("B24") + IT4 * Sheets("IT").Range("B25") _ + IT5 * Sheets("IT").Range("B26") + IT6 * Sheets("IT").Range("B27") _ + IT7 * Sheets("IT").Range("B28") + IT8 * Sheets("IT").Range("B29") _ + IT9 * Sheets("IT").Range("B67") + IT10 * Sheets("IT").Range("B68") _ + IT11 * Sheets("IT").Range("B69") + IT12 * Sheets("IT").Range("B70") _ + IT14) End Function OK? [inlägget ändrat 2010-01-01 07:31:59 av short]
  13. Nu ser den ut så här: Function SummaIT(IT1, IT2, IT3, IT4, IT5, IT6, IT7, IT8, IT9, IT10, IT11, IT12, IT14, Person As Range) SummaIT = IT1 * Sheets("IT").Range("B21") + IT2 * Sheets("IT").Range("B23") _ + IT3 * Sheets("IT").Range("B24") + IT4 * Sheets("IT").Range("B25") _ + IT5 * Sheets("IT").Range("B26") + IT6 * Sheets("IT").Range("B27") _ + IT7 * Sheets("IT").Range("B28") + IT8 * Sheets("IT").Range("B29") _ + IT9 * Sheets("IT").Range("B67") + IT10 * Sheets("IT").Range("B68") _ + IT11 * Sheets("IT").Range("B69") + IT12 * Sheets("IT").Range("B70") _ + IT14 If SummaIT = 0 Then SummaIT = "" End If If IsEmpty(Person) = True Then SummaIT = "" End If End Function Det fungerar utmärkt! Person är kolumn C som jag ville få tag i.
  14. Jag har följande funktion: Function SummaIT(PC As Range) Application.Volatile True SummaIT = PC.Offset(0, 0) * Sheets("IT").Range("B21") + PC.Offset(0, 1) * Sheets("IT").Range("B23") _ + PC.Offset(0, 2) * Sheets("IT").Range("B24") + PC.Offset(0, 3) * Sheets("IT").Range("B25") _ + PC.Offset(0, 4) * Sheets("IT").Range("B26") + PC.Offset(0, 5) * Sheets("IT").Range("B27") _ + PC.Offset(0, 6) * Sheets("IT").Range("B28") + PC.Offset(0, 7) * Sheets("IT").Range("B29") _ + PC.Offset(0, 8) * Sheets("IT").Range("B67") + PC.Offset(0, 9) * Sheets("IT").Range("B68") _ + PC.Offset(0, 10) * Sheets("IT").Range("B69") + PC.Offset(0, 11) * Sheets("IT").Range("B70") _ + PC.Offset(0, 13) If SummaIT = 0 Then SummaIT = "" End If End Function Jag vill testa en sak som finns i kolumn C men jag kan inte använda offset eftersom antalet kolumner mellan den returnerade range (PC) och kolumn C varierar mellan 60-80 st. Finns det något sätt att veta vilken rad som det returnerade range (PC) ligger på eller något annat som gör att jag kan testa värdet i kolumn C. Jag har 500 rader på den aktuella fliken.
  15. I Walkenbachs bok: Excel 2003 Power Programming with VBA på sid 848 beskrivs hur man byter ut en modul i en arbetsbok genom att sända ut en ny arbetsbok med kod som byter moduler. Jag skulle kunna ha stor användning för detta men så fort jag kör den anvisade koden så får jag svaret att min säkerhetsinställning inte tillåter det. Är den någon som har några tips?
  16. Om jag har två CommandButtons som ska tas bort med koden ActiveSheet.Shapes("CommandButton1").Delete ActiveSheet.Shapes("CommandButton2").Delete Kör man går det bra men stegar man så gär det inte och felmeddelandet "Det går inte att köra avbrottsläge just nu" visas. Samma meddelande kommer om man har en avbrottspunkt i modulen där programmet stannar för att sedan fortsätta. Varför går det när man bara kör men inte när man stegar??? /short
  17. Stort tack. Du brukar alltid säga att man ska undvika select men jag har inte fattat hur man gör det i vissa fall. Nu föll poletten ned.
  18. Om jag står på blad2 så fungerar inte koden. Det jag ville är att stå på blad2 och köra en sortering på blad1 utan att behöva först selektera blad1
  19. Om man spelar in ett sorteringsmakro ser det ut så här: Range("A1:A20").Select Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Det bygger på att man står på den sida sorteringen ska ske på. Finns det något sätt att genomföra en sortering på en annan sida än den man står på utan att koda sorteringen själv? /short
  20. [inlägget ändrat 2009-10-18 08:02:37 av short]
  21. Jag har aldrig fattat varför man inte kan flytta värden på detta sätt Sub flytta1Fel() Sheets("Blad1").Range("A:2") = Sheets("Blad1").Range("A:1") End Sub Medan Sub Flytta2() Sub flytta1a() Sheets("Blad1").Cells(5, 1) = Sheets("Blad1").Cells(1, 1) End Sub fungerar. Varför? /short
×
×
  • Skapa nytt...