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

Färg- alternativt kantmarkera aktiv cell


Patahl03
 Share

Rekommendera Poster

Hej, 

(Edit: fel första kod ändrad)

har försökt leta efter motsvarande i forumet, men lyckas inte hitta något trots att jag var övertygad om att det möjligen skulle finnas.

 

Låtom oss börja från början:

 

Jag har ett projektdokument i vilket vi är flera som arbetar, allt från fullständiga Excel noviser till en hobbyanvändare om jag. I detta arbetslag är jag Guru'n, tro det eller ej. Förekommer säkert på fler arbetsplatser bara man öppnat Excel. Nåväl, vårt dokument är ett med två kalkylblad. Det första är en översikt över projekt. Bakom detta ligger en VBA kod som gör att när jag dubbelklickar på ett projektnamn så öppnar sig blad2 på vilket det filtreras så, baserat på projektnamnet, visas bara de uppgifter som tillhör det specifika projektet. Om jag nollställer alla filter på blad2 så visas allting, såklart.

 

Det filtreras flitigt i detta dokument, vilket betyder att alla rader justeras gång efter annan med resultatet att en fylld rad kan "hamna på" en smalare rad efter filtrering och man KAN missa information. Jag själv vet om detta och fixar manuellt radhöjder då och då, alternativt dubbelklickar i en specifik cell för att få överblicken av det som står i den... Detta förstår inte all av oss ;)

 

Min tanke var att se till att markera aktiv cell (och få dem andra att dubbelklicka på varje uppgift för att kunna se allting i respektive cell utan att behöva justera radhöjd vid varje filtrering). Om cellen inte highlight'as på något sätt så "flyter" text ihop med närliggande celler. Kunde jag dock färg eller kantmarkera aktiv cell så skulle det lösa sig.

 

Nå, en VBA kod googlades fram och fungerade alldeles utmärkt (lades i worksheet för utslag i hela dokumentet):

Citat
Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
'Update 20140923
Static xLastRng As Range
On Error Resume Next
Target.Interior.ColorIndex = 6
xLastRng.Interior.ColorIndex = xlColorIndexNone
Set xLastRng = Target
End Sub

MEN... Av någon anledning föll då det grundläggande i dokumentet. "Länkningen" från blad1's projektnamn till den filtrerade variant på blad2 i och med att alla dubbelklick i dokumentet på något sätt registrerades för att färga en cell OCH gå vidare till en felaktig filtrering på blad2. I normalläget, d v s utan denna nya VBA kod är det endast projektnamnet som genererar en länk, inte andra celler på samma rad.

 

Jag kan inte tillräckligt för att fixa själv, så jag postar även den kod som ligger tillgrund för "länkningen" här. Följande ligger som VBA på blad1:

Citat

Option Explicit


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strCellVal As String
Dim i As Long

    On Error Resume Next
    
    If Intersect(Target.EntireRow, [Projekt[Projekt]]) Is Nothing Then Exit Sub
    If Target.Cells.Count <> 1 Then Exit Sub
    
    strCellVal = ActiveCell.Value
    
    With Sheet2
        .ListObjects(1).Range.AutoFilter 3, Criteria1:=Intersect(Target.EntireRow, [Projekt[Projekt]])
        .Activate
        i = .ListObjects(1).Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
     If i = 1 Then
        .ListObjects(1).Range.End(xlDown).Offset(1, 2).Value = strCellVal
     End If
        .[A1].Select
    End With
        
    Cancel = True

End Sub

 

Och detta ligger som kod för blad2:

Citat

Option Explicit


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    On Error Resume Next
    
    With Application
        .Cursor = xlNorthwestArrow
        BooleanCellDoubleClick Target, [Uppgifter[[Klart]]], Cancel
        .Cursor = xlDefault
    End With

End Sub


Private Sub BooleanCellDoubleClick(rTarget As Range, rValidRange As Range, Cancel As Boolean)

    On Error Resume Next
    
    Application.CellDragAndDrop = False
    
    If rTarget.Cells.Count > 1 Then Exit Sub
    If Intersect(rTarget, rValidRange) Is Nothing Then Exit Sub
    
    If Len(rTarget) Then
        rTarget = vbNullString
    Else
        rTarget = 1
    End If
    
    Application.CellDragAndDrop = True
    
    Cancel = True

End Sub

Försöker jag göra saker för svåra för mig ? Finns det enklare lösning ? Har testat att autofylla celler, eller vad det heter (har inte Excel framför mig nu) men det får jag inte att funka i och med ständig filtrering...

 

Dum fråga kräver dumt svar, hehe… Men finns det en lösning på min "markera aktiv cell" fråga och någon här kan den vore jag ytterst tacksam för lösningsförslag.

 

Mvh

Patric.

Redigerad av Patahl03
Länk till kommentar
Dela på andra webbplatser

Hej, Mikael63, och tack... Vid en första anblick ser det ut att vara exakt vad jag vill ha. Kan ju möjligen modifiera för att slippa kolumn och rad "färgning". Jag kollar in detta och försöker lite grann. Återkopplar sen.

Återigen, tack så mycket ;) och ha en fortsatt bra dag.

 

Patric.

Länk till kommentar
Dela på andra webbplatser

Ahhh, dessvärre... :( 

Har en DEEEEL i mitt dokument och det blev 1. väldigt trögt, formateringen kom inte alltid i gång. Ibland bara på just cellen jag klickade på (vilket i och för sig var vad jag är ute efter, hehe) och ibland bara en rad... Vet inte om mängden data spelar roll, men jag gissar det.

Jag har inte bättre än Excel 2016, heller. Om det är av vikt.

Den VBA snurra jag hittade ovan gick fort nog men förstörde länkningen. Önska en villkorsstyrd formatering kunde göras så: Jag klickar på en cell så färgas den och när jag klickar någon annanstans så  blir den ofärgad igen, hehe...Har nog stirrat mig blind på den enklaste av lösningar, säkert :(

 

Länk till kommentar
Dela på andra webbplatser

Angående länkning - kan du inte göra denna med länk.

 

Formler som lyssnar på SelectionChange ska vara väldigt små och lätta och om man har VBA-kod som körs, som skriver till blad är det alltid bra att skriva in

On Error GoTo err:

    Application.EnableEvents = False
    'aktiv kod

err:
    Application.EnableEvents = True

 

Ser i övrigt inte att SelectionChange och BeforeDoubleClick ska störa varandra

bild.png.bb2579515561be4a527cf1ed82a9c29c.png

Länk till kommentar
Dela på andra webbplatser

Kan du inte bara låsa bladet så celländringarna inte går att göra?

Kanske går det inte låsa så specifikt du önskar och ändå ha delar upplåsta som behöver vara det?
 

 

Länk till kommentar
Dela på andra webbplatser

Tack, Monshi för förtydligande och kodkoll.

Tack, Mikael63, är inte lösningen jag letar efter, dock tackar jag för länken då den säkert kan komma till användning i ett annat läge.

 

Polken, ändringar SKA kunna göras. Vi är fem personer som ska kunna använda dokumentet, speciellt nu under semesterperioden då personlig överlämning inte existerar. Dokumentet är det levande sättet för oss att hålla koll på arbeten på det specifika området i fråga. Det är där vi för in tämligen stora mängder av data (text, siffror, datum, beslutsfattare, ansvariga o. s. v). Själva anledningen till min "markera aktiv cell" förfrågan var att:

 

1. vid filtrering förändras radhöjder

2. då detta sker döljs en del text i celler som innehåller mycket text.

3. det KAN då "försvinna" data ur betraktarens synvinkel om man inte har fokus på aktiv cell/eller den automatiskt förstoras till att visa allt innehåll vid aktivering.

 

Om man dubbelklickar i en cell inträder redigeringsläge vilket gör att cellen "sväller" och visar allt i densamma. Men i och med mycken text så "flyter" det ihop med omkringliggande celler därav skulle en färgade kantlinjer möjligen kunna highlighta en dubbelklickad cell. Allt för tydlighetens skull...

 

Går det inte så går det inte. Tänkte bara jag skulle slippa köra ECDL light med mina kollegor utan istället påpeka att "dubbelklicka så ser du var du är och i vilken cell du håller på att skriva" ;)

 

Tackar för ett trevligt bemötande av en potentiellt dum fråga och för ett trevligt forum där hjälp aldrig är långt borta.

 

Patric.

 

Länk till kommentar
Dela på andra webbplatser

 Share

×
×
  • Skapa nytt...