25. oktober 2011 - 13:41Der er
10 kommentarer og 1 løsning
Skjule ovenstående linje ved specifik værdi i celleområde
Hej
Jeg har brug for en VBA-kode som kan skjule en ovenstående linje ved en bestemt celleværdi.
Eksempel: Hvis der i celle B1, C1 og D1 står "<lag ikke berørt>", skal række A skjules, dvs, men altså kun når alle 3 celler indeholder teksten "<lag ikke berørt>".
Kan du bruge følgende VBA kode, som skal ligge under det aktuelle sheets Change hændelse ?
Private Sub Worksheet_Change(ByVal Target As Range) Dim b As String Dim c As String Dim d As String Dim v As Boolean
'sæt b, c og d = værdien af cellerne B1, C1 og D1 b = Range("B1").Value c = Range("C1").Value d = Range("D1").Value
'tjek værdierne ... Hvis de alle er = "<lag ikke berørt>" ?, så sæt v = true If b = "<lag ikke berørt>" And c = "<lag ikke berørt>" And d = "<lag ikke berørt>" Then v = True
'hvis v er ture If v = True Then
'vælg kolonne A Columns(1).Select
'skjul den valgte kolonne Selection.EntireColumn.Hidden = True
'vælg celle B1 Range("B1").Select
Else
'vælg kolonne A Columns(1).Select
'skjul den valgte kolonne Selection.EntireColumn.Hidden = False
Jeg kan desværre se, at jeg har forklaret mig forkert og byttet om på kolonner og rækker. Så nu har jeg prøvet at omskrive det til det konkrete regneark.
Private Sub skjul_overskriften(ByVal Target As Range) Dim b As String Dim c As String Dim d As String Dim e As String Dim f As String Dim g As String Dim h As String Dim i As String
Dim v As Boolean
'sæt b - i = værdien af cellerne c11- c18 b = Range("c11").Value c = Range("C12").Value d = Range("c13").Value e = Range("c14").Value f = Range("c15").Value g = Range("c16").Value h = Range("c17").Value i = Range("c18").Value
'tjek værdierne ... Hvis de alle er = "<lag ikke berørt>" ?, så sæt v = true If b = "<lag ikke berørt>" And c = "<lag ikke berørt>" And d = "<lag ikke berørt>" And e = "<lag ikke berørt>" And f = "<lag ikke berørt>" And g = "<lag ikke berørt>" And h = "<lag ikke berørt>" And i = "<lag ikke berørt>" Then v = True
'hvis v er true If v = True Then
'vælg række 10 Rows("10").Select
'skjul den valgte række Selection.EntireRow.Hidden = True
'vælg celle B1 Range("c11").Select
Else
'vælg række 10 Rows("10").Select
'skjul den valgte række Selection.EntireRow.Hidden = False
'vælg celle B1 Range("c11").Select
End If
End Sub
---------------------------------------------- Der er et eller andet, som jeg gør forkert. Hvis C11 til C18 indeholder <lag ikke berørt>, skal række 10 skjules, men det sker ikke. Jeg ved ikke, hvor jeg skal placere koden (under et nyt Module, under det konkrete regneark eller ThisWorkbook???). Desuden er de andre Public subs - har det en betydning?
Du skal nok få dine point fordi jeg har forklaret mig forkert, men jeg håber, at du kan hjælpe mig videre inden da.
If Range("c11").Value = "<lag ikke berørt>" And _ Range("c12").Value = "<lag ikke berørt>" And _ Range("c13").Value = "<lag ikke berørt>" And _ Range("c14").Value = "<lag ikke berørt>" And _ Range("c15").Value = "<lag ikke berørt>" And _ Range("c16").Value = "<lag ikke berørt>" And _ Range("c17").Value = "<lag ikke berørt>" And _ Range("c18").Value = "<lag ikke berørt>" Then
Rows("10").EntireRow.Hidden = True Else Rows("10").EntireRow.Hidden = False End If
End Sub
Kopier koden --> Højreklik på aktuelle Ark --> vælg 'Vis programkode' Hold ctrl nede --> tryk tasten V Luk på det røde kryds.
Vælg Menuen "Makroer" og dobbelt klik på 'Ark1.skjul_overskriften'
Hvis du bytter første linie ud med: Private Sub Worksheet_Change(ByVal Target As Range) Køres makroen når der ændres i arket.
Jeg har prøvet din løsning, men har opdaget, at cellevædierne som skulle indeholde "<lag ikke berørt>" henter deres resultat fra et andet ark. Det kan jeg ikke overskue.
Dit eksempel fungerer sikkert fint, så hvis du smider et svar, får du dine point. Jeg vil nok arbejde videre med den anden løsning fra Store-Morten, som jeg bedre kan overskue. Men tak for hjælpen under alle omstændigheder. Jeg lærer lidt hver gang.
Jeg har testet dit forslag, men jeg har opdaget, at de data som står i cellerne C11 til C18 bliver hentet fra et andet ark. Hvordan laver jeg linket fra mit andet regneark - "Ark2" i nedenstående kode?
Sub skjul_overskriften()
If Range("c11").Value = "<lag ikke berørt>" And _ ARK2 - CELLE C12: Range("c12").Value = "<lag ikke berørt>" And _ ARK2 - CELLE C13:Range("c13").Value = "<lag ikke berørt>" And _ ARK2 - CELLE C14:Range("c14").Value = "<lag ikke berørt>" And _ ARK2 - CELLE C15:Range("c15").Value = "<lag ikke berørt>" And _ ARK2 - CELLE C16:Range("c16").Value = "<lag ikke berørt>" And _ ARK2 - CELLE C17:Range("c17").Value = "<lag ikke berørt>" And _ ARK2 - CELLE C18:Range("c18").Value = "<lag ikke berørt>" Then
Rows("10").EntireRow.Hidden = True Else Rows("10").EntireRow.Hidden = False End If
If Sheets("Ark2").Range("c11").Value = "<lag ikke berørt>" And _ Sheets("Ark2").Range("c12").Value = "<lag ikke berørt>" And _ Sheets("Ark2").Range("c13").Value = "<lag ikke berørt>" And _ Sheets("Ark2").Range("c14").Value = "<lag ikke berørt>" And _ Sheets("Ark2").Range("c15").Value = "<lag ikke berørt>" And _ Sheets("Ark2").Range("c16").Value = "<lag ikke berørt>" And _ Sheets("Ark2").Range("c17").Value = "<lag ikke berørt>" And _ Sheets("Ark2").Range("c18").Value = "<lag ikke berørt>" Then
Rows("10").EntireRow.Hidden = True Else Rows("10").EntireRow.Hidden = False End If
Nu har jeg bakset med din løsning og til sidst fundet ud af, hvad der giver problemer. Hvis jeg kører din løsning og søger på "<lag ikke berørt>", virker det ikke. Jeg har lavet en test, hvor jeg har undladt de 2 klammer <>, og så virker det. Problemet er bare, at de resultater, som indsættes i ark2 alle indeholder <klammer> omkring ordet. Er der en mulighed for at komme omkring dette?
De resultater, som indsættes i ark2 alle indeholder <klammer> omkring ordet. Er du sikker på at det er < (mindre end) og > (større end) ? Prøv evt. at kopier resultatet på ark2 og sæt ind i koden. If Sheets("Ark2").Range("c11").Value = "<lag ikke berørt>" And _ osv...
Synes godt om
Ny brugerNybegynder
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.