Avatar billede HHA Professor
05. februar 2025 - 07:27 Der er 15 kommentarer

Fortryd virker ikke pga. VBA

Hejsa,

Jeg har en VBA kørende i baggrunden, for at farve teksten i en celle blå fra et bestemt ord og resten af teksten i cellen, hvis den finder det bestemte ord.
Dette gør så at jeg ikke kan fortryde en handling mere.
Det har jeg som sådan fået svar på her, med mindre der er kommet nye ting til senere. https://www.computerworld.dk/eksperten/spm/1012510

Jeg kan så lave det som en kode der køres med fx tryk på en knap.
Men vil det kunne laves med en betinget formatering af cellerne?

Her er min kode:
Public Sub Worksheet_Change(ByVal Target As Range)

'Sub TextPartColourMacro()

' Declarations and Initialisation
Dim Row As Integer, Col As Integer
Dim CurrentCellText As String
Col = 8

' Loop Through Rows
For Row = 20 To 3500

    ' Get Text in Current Cell
    CurrentCellText = ActiveSheet.Cells(Row, Col).Value
   
    ' Get the Position of the Text WORD
    StartPosition = InStr(1, CurrentCellText, "WORD:")
     
    ' Colour the Word Blue
    If StartPosition > 0 Then
        ActiveSheet.Cells(Row, Col).Characters(HotStartPosition, 2000).Font.Color = RGB(0, 0, 255)
   
    End If
   
Next Row

End Sub
Avatar billede Jan Hansen Ekspert
05. februar 2025 - 10:26 #1
Forslag:
Split din tekst i to kolonner og lav betinget formatering på nr 2 som indeholder tekst der skal farves.
Hvis din tekst står i H20
I20 formel; =HVIS(HVIS.FEJL(VENSTRE(H20;FIND("WORD";H20)-1);H20)=0;"";HVIS.FEJL(VENSTRE(H20;FIND("WORD";H20)-1);H20))
J20 formel;
=HVIS.FEJL(MIDT(H20;FIND("WORD";H20);LÆNGDE(H20)-(FIND("WORD";H20)-1));"")
Betinget formatering formel;
=J20<>""
Gælder for:
J20:J3500

Mvh Jan
Avatar billede HHA Professor
05. februar 2025 - 10:50 #2
#1 Jan,

Kunne selvfølgelig være en mulighed, men vil ikke splitte teksten op i flere kolonner.
Det er et ark vi bruger til at kalkulere i, hvor vi indsætter modtagerens tekst fra forespørgslen og det er så en besked til modtageren af tilbuddet vi gerne vil have farvet blå. Så vi som sidder med det kan se evt. forbehold eller anden information.

Så håbede det kunne forblive som det virker nu, dog at fortryd (CTRL + Z) ville virke.
Vi kommer ikke til at lave en kolonne mere, da vi så skal til at scrolle sidelæns for at se det hele., Hvis du forstår.

Men ja, det er da en mulighed.
Avatar billede Jan Hansen Ekspert
05. februar 2025 - 11:16 #3
Kan man ikke lege med hvornår vba-en kører, med en knap eller hvis man forlader arket eller......
Avatar billede HHA Professor
05. februar 2025 - 11:31 #4
#2 Jan,
Jo, det kan man. Havde jeg også i tankerne, men kunne være der var nogle der kendte et trick.
Det er skide smart som det er nu, så skal man ikke tænke på det. Men hvis man kopierer en masse tekst over og det er formateret lidt anderledes, så indsætter den pludselig teksten i alle mulige celler og overskriver andre ting og så er der kun den tunge vej og reparere det hele igen 🙃

Men ser om der skulle være andre der kommer med en anden løsning.
Avatar billede Jan Hansen Ekspert
05. februar 2025 - 11:32 #5
En anden løsning kunne være:
Et print/mail ark hvor den nu værdende vba kører
et arbejdsark uden vba-en  hvor teksten kommer frem  i en formular når en celle i rækken aktiveres, rækker der indeholder "WORD" farves med betinget formatering.
Avatar billede Jan Hansen Ekspert
05. februar 2025 - 11:41 #6
Hvis du sætter kopieret tekst ind via en formular kan du med sikkerhed styre hvor teksten lander.
du kan evt uploade dit ark med dummy data til onedrive eller lignede så man kan se på det: Og give det et skud.

Mvh Jan
Avatar billede HHA Professor
05. februar 2025 - 13:01 #7
#6 Jan,

Det bliver kopieret fra PDF, Excel, Word og hvad de ellers kan finde på at sende det i.
Så vi har ikke lige den gyldne løsning på at få det kopieret over ved en kode.
Det er den lidt hårde vej 🫣

Men ligger lige en dummy her:
http://46.32.50.245:8080/share.cgi?ssid=73eedcfc9ff647049982de6fabe5b7b9&fid=73eedcfc9ff647049982de6fabe5b7b9

Kode 6600
Avatar billede Jan Hansen Ekspert
05. februar 2025 - 14:10 #8
Hej igen
En lidt vild ide herfra
hvad med at lave et logark (måske skjult) der virker som logfil
altså nå definerede celler aktiveres gemmes indholdet  på logarket og via en knap kunne føres tilbage
hvis der hver gang gemmes række og kolonne og indhold i en ny række på logarket vil man kunne gå mange trin tilbage.
det med ved kopiering fra mange forskellige kilder kan lave ged i arket ville jeg løse ved en lille popup formular  da du der kan styre at alt du sætter ind i formularen kommer over i den rigtige celle.

Jan

Jan
Avatar billede HHA Professor
05. februar 2025 - 14:36 #9
#8 Jan,

Hejsa,

Lyder måske som en løsning.
Men vil det ikke få det hele til at arbejde langsomt?
Fx når man overfører fra arket med standard priser, der har vi ca. 1000 linjer at vælge mellem og kan fx markere 10 linjer og køre VBA overfør med/uden tekst, bare for et eksempel.
Vil den kunne håndtere, at når man fx kopierer en tekst over fra fx en PDF, så kan den til tider havne, alt efter formateringen, i mange celler på en gang.

Vil den komme til at køre langsomt?
Avatar billede Jan Hansen Ekspert
05. februar 2025 - 15:37 #10
Overførsel fra regneark, kan løses uden de bliver langsom, det er hvis data ikke kommer fra en tabel at det bliver svært, for hvorledes skal linjeskift, komma, kolon, semikolon, dobbelt mellemrum og punktum tolkes.

Var det kun fra et andet ark ville man i vba kunne ligge data ind i en tabel i hukommelsen, finde størrelsen på den, kopiere hvad der er i området der har samme størrelse i log arket og sætte tabellen fra hukommelsen ind i stedet.

Jo mere man kan få til at foregå i hukommelsen og ikke på ark jo mindre påvirker man hastigheden.
I vba altid en god ide at slå skærmopdateringen fra i begyndelsen af vba koden og slå den til i slutningen.
Avatar billede HHA Professor
06. februar 2025 - 07:17 #11
#10 Jan,

Det lyder meget godt og som en mulig løsning.
Men det lyder komplekst og ligger vist meget langt ud over mine evner.

Ift. det, så bliver det vist en VBA der skal køres manuelt, det kan jeg da finde ud af at lave.
Avatar billede Jan Hansen Ekspert
06. februar 2025 - 07:58 #12
Hvis du fortæller mig hvor mange celler der er i en række der skal kopieres og om kolonne 1 i rækken er et unik "varenummer" og hvilke data typer der er i de øvrige kolonner.
jeg vil så prøve om jeg kan lave et bud på en løsning.

ps. hvis data kommer fra en kilde der ikke opfylder ovenstående regler kunne jeg forestille mig du har et mellemliggende ark som du ligger data ind i så du ikke smadre arket, så kan du tilpasse data før overførsel.

det er vigtig at data før overførsel altid er ens og med et mellem liggende ark, hvis data kommer fra en kilde (pdf, .....) der ikke er et regneark der opfylder oven stående regler ( dem jeg beder dig om at definere i øverste afsnit), vil du altid kunne tilpasse data før endelig onerførsel.

Jan
Avatar billede HHA Professor
06. februar 2025 - 08:49 #13
#12 Jan,

Vi kopierer over meget manuelt, da næsten ingen forespørgsler er ens og meget forskelligt opsat.
Det kan være PDF, hvor "spec. ref. nr." (kolonne E) og teksten er i samme kolonne.
Specfikationsnummer kan være rene tal, blanding af tal og bogstaver.

Normalt kopierer vi manuelt over, men hvis man ikke lige husker at klikke, så man er inde i cellen og ikke kun markeret, så kopierer den fx teksten over som flere linjer og dermed kan de overskrive andre celler, hvis det er inde midt i et ark og lige ville indsætte en tekst der.

Jeg bruger ofte nogle gratis online konvertere til at konvertere PDF til Excel og så tilrette lidt der og så kopiere manuelt over.
Men den undo funktion er nok den der mangler mest, da man altid får lavet et eller andet galt og så ville det være fint at kunne fortryde.
Fandt lige dette, som jeg ikke har nået at kigge ind i endnu:
https://www.youtube.com/watch?v=KqWLfCtiTKc

Men det er punktet der skal i kolonne E og teksten i kolonne H.
Så er der tiltider et hoved punkt og flere underpunkter i en specifikation.

Jeg smider lige et par forskellige eksempler op i samme link.
Avatar billede Jan Hansen Ekspert
06. februar 2025 - 21:33 #14
Avatar billede HHA Professor
07. februar 2025 - 08:24 #15
#14 Jan,

Den skal jeg lige have tjekket ud.
Spændende om det er løsningen 🤞
Takker mange gange 👌
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Stort udvalg af Excel kurser til alle niveauer og jobfunktioner

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis