Avatar billede region Nybegynder
26. november 2001 - 11:22 Der er 22 kommentarer og
2 løsninger

Skjulte kolonner

Jeg har skjult adskillige kolonner i mit Excel 97 regneark. Hvordan kan man låse for muligheden med at markere hele arket og klikke mellem 2 kolonner for at autojustere kolonnebredden og derved også synliggøre mine skjulte kolonner.

VBA koden ønskes..

NB.
Arket må ikke låses for indtastninger i alle felter der ikke er skjult.!!
Avatar billede janvogt Praktikant
26. november 2001 - 11:26 #1
Når du beskytter dit ark, kan du ikke autojustere kolonnebredden.
26. november 2001 - 11:27 #2
Det kan løses uden VBA, hvis du vil.
Marker alle celler, som ikke må låses, og højreklik - vælg formater Celler - vælg fanebladet Beskyttelse og fjern V-markering ved Låst.
Beskyt hele arket, hvorefter kun dine ikke låste celler er åbne.
Avatar billede region Nybegynder
26. november 2001 - 11:39 #3
Duer ikke fordi arket er shared i forvejen....
26. november 2001 - 11:44 #4
Hvis du absolut vil bruge VBA, så kan du ligge noget kode i arkets eget kodemodul i denne her:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Alle kolonner du vil skjule skal nævnes her, så vil du sikre, at de er skjult, hver gang der en ny celle markeres. Denne metode vil ændre væsentligt på hastigheden, hvorfor jeg klart vil anbefale den første løsning jeg skrev.
26. november 2001 - 11:47 #5
Her f.eks. kolonne B og F
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range(\"B1\").EntireColumn.Hidden = True
    Range(\"F1\").EntireColumn.Hidden = True
End Sub
Avatar billede region Nybegynder
26. november 2001 - 11:47 #6
Hej Flemming. Det er fordi jeg \"kører\" flg. når jeg åbner excelarket. Som du kan se skjuler jeg bare udvalgte kolonner når det åbnes. Disse vil jeg gerne sikre forbliver skjult hvis man markere hele arket og dobbeltklikker mellem 2 kolonner.

Sub auto_open()
    Application.CommandBars(\"data\").Controls(1).Visible = False
   
    \'\"Amount group no.\"
  Range(\"A1\").Select
  ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"amount\", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False).Activate
    ActiveCell.Select
    Selection.EntireColumn.Hidden = True
   
       
\' \"DeleteModuleWFProduct\"
Range(\"A1\").Select
  ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"DeleteModuleWFProduct\", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False).Activate
    ActiveCell.Select
    Selection.EntireColumn.Hidden = True


\' \"keywords\"
Range(\"A1\").Select
  ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"keywords\", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
    ActiveCell.Select
    Selection.EntireColumn.Hidden = True
   

\' \"price\"
Range(\"A1\").Select
  ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"price\", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
    ActiveCell.Select
    Selection.EntireColumn.Hidden = True

\' \"1-PushWFProduct\"
Range(\"A1\").Select
  ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"1-PushWFProduct\", After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
    ActiveCell.Select
    Selection.EntireColumn.Hidden = True


\' \"Supplier no.\"
  Range(\"A1\").Select
      ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"Supplier no.\", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False).Activate
    ActiveCell.Select

\' \"Supplier name\"
  Range(\"A1\").Select
      ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"Supplier name\", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False).Activate
    ActiveCell.Select

\' \"unit\"
  Range(\"A1\").Select
      ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"unit\", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False).Activate
    ActiveCell.Select

Range(\"A1\").Select
\'    ActiveCell.Offset(-5, -68).Range(\"A1\").Select

End Sub
26. november 2001 - 11:52 #7
Den eneste måde, hvor du kan låse helt af, er ved den første metode, som jeg beskrev. Ved den anden metode kan du godt vise kolonnerne, men så snart du flytter markøren til en anden celle, så skjules kolonnerne igen.

Du kan ikke 100% løse problematikken med VBA.
Avatar billede region Nybegynder
26. november 2001 - 12:08 #8
Ok...

Så lige en sidste ting for at jeg er helt tilfreds.

hvad er VBA koden for at lave en kolonne rød som cellefarve.

er det noget med :
Selection.EntireColumn.vbcolor = red

eller..???
Avatar billede janvogt Praktikant
26. november 2001 - 12:13 #9
Prøv med:

Columns(\"D:D\").Select
With Selection.Interior
    .ColorIndex = 3
End With
Avatar billede janvogt Praktikant
26. november 2001 - 12:23 #10
For at se farvekoderne kan du stille dig på \"ColorIndex\" i VBA og trykke F1, så får du en oversigt med alle farver og tilhørende koder.
Avatar billede region Nybegynder
26. november 2001 - 12:27 #11
Jeg kan ikke rigtig føre dit udtryk ind i mit...!!

hvordan vil du placere det i flg. :

Sub auto_open()
    Application.CommandBars(\"data\").Controls(1).Visible = False
      Range(\"A1\").Select
  ActiveCell.Offset(5, 0).Rows(\"1:1\").EntireRow.Select
    Selection.Find(What:=\"amount\", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False).Activate
    ActiveCell.Select
    Selection.EntireColumn.Hidden = True
end sub
Avatar billede janvogt Praktikant
26. november 2001 - 12:32 #12
Som jeg skrev i mit allerførste svar, og som flemming siden har bekræftet er arkbeskyttelse det bedste alternativ i din situation.

Der findes imidlertid en kode, som når den anvendes sammen med beskyttelse, gør det umuligt overhovedet at markere de låste celler.
26. november 2001 - 12:36 #13
With Selection.EntireColumn

    .Interior.ColorIndex = 3
Avatar billede janvogt Praktikant
26. november 2001 - 12:36 #14
Hvad er det for en kolonne, som skal gøres rød?

Hvis det er kolonne B kan du bruge:
Columns(\"B:B\").Select
With Selection.Interior
    .ColorIndex = 3
End With

i slutningen af din kode lige før \"End Sub\".
26. november 2001 - 12:37 #15
hov - betjeningsfejl :-)
Selection.EntireColumn.Interior.ColorIndex = 3
Avatar billede region Nybegynder
26. november 2001 - 12:38 #16
Forstå mig ret..
Jeg erkender at jeg ikke kan lave det jeg ønsker, MEN vil omgås dette ved at lave alle skjulte kolonner røde således jeg pr. MSGBOX kan informere om at røde kolonne er interne og ikke må bearbejdes.

Jeg mangler derfor bare koden der i mit eksempel markere hele kolonnen og gør den rød. Som i kan se kender jeg ikke kolonne \"navnet\" på forhånd hvorfor jeg først søger efter navnet.
Avatar billede region Nybegynder
26. november 2001 - 12:41 #17
Flemming gav den rigtige...

Selection.EntireColumn.Interior.ColorIndex = 3

fordeling af point :

Flemming : 40
JAn :20

Er det ok med jer eller...?
Avatar billede janvogt Praktikant
26. november 2001 - 12:42 #18
Så kan du bruge
Selection.EntireColumn.Interior.ColorIndex = 3

Den tager udgangspunkt i den aktive celle.
26. november 2001 - 12:43 #19
ok
Avatar billede janvogt Praktikant
26. november 2001 - 12:44 #20
Tjah, det er op til dig.

Jeg mener dog at være først med løsningen om at beskytte arket.
Jeg forstår stadig ikke at du ikke kan anvende denne løsning.
Avatar billede region Nybegynder
26. november 2001 - 12:46 #21
ingen ballade ... 60 til hver...
Avatar billede janvogt Praktikant
26. november 2001 - 12:47 #22
Du kan jo evt. starte din kode med at fjerne arkbeskyttelse og så lægge den på til sidst i koden, når du har skjult/vist de rigtige kolonner.
Avatar billede region Nybegynder
26. november 2001 - 13:09 #23
no can do.... :-))

Det er ikke mig der laver exporten og har shared dette ... dette foretages af 3\'de parts firma...
Avatar billede janvogt Praktikant
26. november 2001 - 13:12 #24
Ok, så er der nok ikke så meget at gøre.

Hvad kan man lære af det?: Gør alting selv!  :-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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