13. august 2012 - 09:08Der er
9 kommentarer og 1 løsning
Hvordan opretter men en Command Button som lukker forskellige kolumner hver gang?
Jeg prøver at skrive en kode som lukker de kolumner som man lige har skrivet, i når man trykker på en Command Button. Man begynder at skrive i C og AA. Derefter skriver man i D og AB etc. ind til at man har byttet kolunmer 19 gange.
Jeg skrev først en kode hvor Command Button lukker C og AA, og åbner D og AB, men kan ikke komme videre derfra. Jeg prøvede derfor at skrive en kode ud fra ActiveCell, men hvis man markerer et andet sted, inden man bruger Command Button, så vil helt forkerte kolumner lukkes.
En komplicerende faktor er, at jeg også har lavet en "undo" Command Button, så man kan ikke bare begynde på C og derefter tælle op.
Kan nogen hjælpe mig at finde en løsning? Tak! Koden kan ses nedenfor:
Private Sub ButtonSkjul_Click()
'Public Sub Vil_du_gå_videre() Dim Answer As VbMsgBoxResult, AnswerStr As String MsgBox "Denne boks vil føre dig til næste borgere", , "Messagebox" Answer = MsgBox("Er du sikker på, at du vil gå videre til den næste borgere?", vbYesNo) If Answer = vbYes Then ' Hide_Column Makro Range("C2").EntireColumn.Hidden = True ' Viser Column D2 Range("D2").EntireColumn.Hidden = False ' Hide_Column Makro Range("AA2").EntireColumn.Hidden = True ' Viser Column D2 Range("AB2").EntireColumn.Hidden = False
End If End Sub
Private Sub CommandButtonTest_Click()
'Public Sub Vil_du_gå_videre() Dim Answer As VbMsgBoxResult, AnswerStr As String MsgBox "Denne boks vil føre dig til næste borgere", , "Messagebox" Answer = MsgBox("Er du sikker på, at du vil gå videre til den næste borgere?", vbYesNo) If Answer = vbYes Then ' Hide_Column Makro ActiveCell.EntireColumn.Hidden = True ' Viser Column D2 ActiveCell.Offset(0, 1).EntireColumn.Hidden = False ' Hide_Column Makro ActiveCell.Offset(0, 24).EntireColumn.Hidden = True ' Viser Column D2 ActiveCell.Offset(0, 25).EntireColumn.Hidden = False
Const antalNæste = 19 Const xKol = 3 Const yKol = 27 Dim antal As Integer, førsteKol As Integer, forSkyd As Integer Public Sub næste() 'Skal forbindes med Knap If antal <= antalNæste Then skjulKolonne førsteKol + 1, False skjulKolonne førsteKol + 1 + forSkyd, False skjulKolonne førsteKol, True skjulKolonne førsteKol + forSkyd, True antal = antal + 1 førsteKol = førsteKol + 1 End If End Sub Private Sub skjulKolonne(kolonneNr, skjul As Boolean) ActiveSheet.Columns(kolonneNr).Hidden = skjul
If skjul = False Then ActiveSheet.Columns(kolonneNr).ColumnWidth = 170 End If End Sub Rem ================================================ Private Sub Worksheet_Activate() 'Når arket aktiveres antal = 1 førsteKol = xKol forSkyd = yKol - xKol visOpstartsKolonner End Sub Sub visOpstartsKolonner() Application.ScreenUpdating = False For kol = 1 To ActiveSheet.Columns.Count If kol = xKol Or kol = xKol + forSkyd Then ActiveSheet.Columns(kol).Hidden = False ActiveSheet.Columns(kol).ColumnWidth = 170 Else ActiveSheet.Columns(kol).Hidden = True End If Next kol Application.ScreenUpdating = True End Sub
Public Sub findFørsteIkkeSkjulteKolonne() Dim førsteLedigeKolonne As Integer førsteLedigeKolonne = søgLedigKolonne
Rem ... End Sub Private Function søgLedigKolonne() 'returnerer nr på første kolonne, der er synlig Dim kol As Integer For kol = 1 To ActiveSheet.Columns.Count If ActiveSheet.Columns(kol).Hidden = False Then søgLedigKolonne = kol Exit Function End If Next kol søgLedigKolonne = 0 End Function
Tak for din hjælp! Jeg kom dog til, at bruge en anden løsning:
Private Sub CommandButton1_Click()
Dim iSvar As Integer iSvar = MsgBox("Er du sikker på, at du vil gå videre til den næste borgere?", vbYesNo) If iSvar = vbYes Then For Each Column In Range("C1:AT1").Columns If Column.Hidden = False Then Column.EntireColumn.Hidden = True Column.Offset(1, 1).EntireColumn.Hidden = False Column.Offset(0, 24).EntireColumn.Hidden = True Column.Offset(0, 25).EntireColumn.Hidden = False Exit Sub End If Next Column End If End Sub
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.