Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 12 odgovora
  • 2.808 pregleda

Najnovija ↓

VBA to Hide columns on multiple sheets 14.05.2024. u 14:36 · pre 30 meseci #1
Pozdrav ekipa,

htjela sam provjeriti je li moguće postaviti VBA ako imam login formu admin i user (https://www.youtube.com/watch?v=jGhkLeHMEUA) gdje se userima skrivaju neki stupci po određenom sheetu

Dakle imam sheet1(BROD), sheet2(KUĆA), sheet3(AUTO) i htjela bi za usere sakriti stupce (W:AE) na svakom sheetu?

Hvala unaprijed
Mare
Re: VBA to Hide columns on multiple sheets 15.05.2024. u 16:04 · pre 29 meseci
izmenjeno 1 put, poslednji put Jpeca 15.05.2024. u 22:00
  1. Jpeca15.05.2024. u 22:00zapis iz teksta poruke
#2
Da sakriješ kolone W:AE na listu shName možeš da napišeš jednostavnu proceduru

Code:
Private Sub HideColumns(shName)
    Sheets(shName).Columns("W:AE").Hidden = True
End Sub


Sad tu proceduru prozoveš za sve listove koje hoćeš unutar procedure CommandButton1_Click, u delu Else (for User Role)
Code:
      ...
      ' Skrivanje kolona
        For Each shName In Array("BROD", "KUĆA", "AUTO")
             HideColumns shName
        Next shName


U primeru koji si navela dodao sam kod tako da imaš primer gde kad se uloguješ kao Lucy videćeš da su sakrivene kolone na listovima Cost of Sales i Expenses.

Nisam siguran da li treba da se otrkirvaju kolone za admin role u tom slučaju dodaj pozivanjeprocedure ShowHidden shName u deo za Admin role za navedene listove (For Each...)

Code:
Private Sub  ShowHidden(shName)
    Sheets(shName).Columns("W:AE").Hidden = False
End Sub
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: VBA to Hide columns on multiple sheets 15.05.2024. u 20:44 · pre 29 meseci #3
Ne može tako kako si zamislila.
Taj video koji si postavila je plagijat na temu ovog uputstva:



Tu je detaljno objašnjeno kako da napraviš Excel u kojem sakrivaš neke radne listove ili za koje ne dzvoljavaš menjane za neke usere.

Ceo taj mehanizam radi na nivou radnog ista, a ne za kolone.
Ako želiš da koristiš ovak nešto, to što želiš da sakriješ, skloni na druge radne listove, pa ćeš dobiti to što hoćeš.
Re: VBA to Hide columns on multiple sheets 16.05.2024. u 14:19 · pre 29 meseci #4
Pozdrav JPeca, hvala ti na pomoći... kad se ulogiram kao user onda mmi se požuti Sheets(shName).Columns("W:AE").Hidden = True u formuli

Private Sub HideColumns(shName)
Sheets(shName).Columns("W:AE").Hidden = True
End Sub

Run-time error '1004'
Unable to set the Hidden property of the Range class
Re: VBA to Hide columns on multiple sheets 16.05.2024. u 17:22 · pre 29 meseci #5
Da li govoriš o fajlu koji je attachovan u prethodnoj poruci ili nekom tvom fajlu?

U attachovanom primeru ja mogu da se ulogujem bez problema kao user Lucy i Raj . Kao William dobijem poruku da nemam pristup nijedno listu, ali to je tako zamišljeno.

Ako dobijaš grešku u primeru koji sam ja postavio, navedi tačno korak po korak kako da se reprodukuje greška.

Ako je reč o nekom tvom primeru, moraš da ga postaviš ovde - ne mora kompletan primer nego neki demo, pa da vidim o čemu se radi.
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: VBA to Hide columns on multiple sheets 17.05.2024. u 12:56 · pre 29 meseci #6
Evo otkrila sam zašto mi se to pojavljuje...

Ako postavim da je useru file vidljiv a da ne može uređivati kao read only i tu je ova oznaka Ď
kada stavim da mi je protect onda se pojavljue error 1004 a kada stavit unprotect onda je ok i sakriju se stupci ali to znači da mogu pisati što žele po tablici što naravno ne želim jer to ima pravo samo admin i onaj kome on dozvoli

ElseIf sh.Cells(user_row, i).Value = "Ď" Then
wsh.Visible = xlSheetVisible
wsh.Protect 1234
End If

Kako to postaviti?
Re: VBA to Hide columns on multiple sheets 17.05.2024. u 13:08 · pre 29 meseci #7
Pa možda da sakriješ kolone pre nego što izvršiš protect?

Npr. u Else bloku za User Role odmah iza
Code:
ThisWorkbook.Unprotect 1234

Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: VBA to Hide columns on multiple sheets 17.05.2024. u 13:57 · pre 29 meseci #8
Upisano je... kopirala sam sve kako i je kod tebe pa ne znam što je problem da mi se pojavljuje

Else '''''for User Role

ThisWorkbook.Unprotect 1234

For i = 5 To Application.WorksheetFunction.CountA(sh.Range("2:2"))
Set wsh = ThisWorkbook.Sheets(sh.Cells(2, i).Value)

If sh.Cells(user_row, i).Value = "x" Then
wsh.Visible = xlSheetVeryHidden
ElseIf sh.Cells(user_row, i).Value = "Đ" Then
wsh.Visible = xlSheetVisible
wsh.Protect 1234
ElseIf sh.Cells(user_row, i).Value = "Ď" Then
wsh.Visible = xlSheetVisible
wsh.Protect 1234
End If

Next i

sh.Visible = xlSheetVeryHidden
ThisWorkbook.Protect 1234

' Skrivanje kolona
For Each shName In Array("BROD", "KUĆA", "AUTO")
HideColumns shName
Next shName

End If

ActiveWindow.DisplayWorkbookTabs = True

Unload Me

End Sub
Re: VBA to Hide columns on multiple sheets 17.05.2024. u 17:07 · pre 29 meseci #9
Ja nisam vodio računa o protected - u primeru to nije bio problem. Jednostavno sam taj deo koda ubacio na kraju Else. Znači probaj
Code:

...
Else                                            '''''for User Role
   
        ThisWorkbook.Unprotect 1234
        ' Skrivanje kolona
        For Each shName In Array("BROD", "KUĆA", "AUTO")
            HideColumns shName
        Next shName
        
        For i = 5 To Application.WorksheetFunction.CountA(sh.Range("2:2"))
            Set wsh = ThisWorkbook.Sheets(sh.Cells(2, i).Value)
            
                If sh.Cells(user_row, i).Value = "x" Then
                    wsh.Visible = xlSheetVeryHidden
                ElseIf sh.Cells(user_row, i).Value = "Đ" Then
                    wsh.Visible = xlSheetVisible
                    wsh.Unprotect 1234
                ElseIf sh.Cells(user_row, i).Value = "Ď" Then
                    wsh.Visible = xlSheetVisible
                    wsh.Protect 1234
                End If
            
        Next i
        
        sh.Visible = xlSheetVeryHidden
        ThisWorkbook.Protect 1234
  
End If
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: VBA to Hide columns on multiple sheets 20.05.2024. u 10:34 · pre 29 meseci #10
Nažalost i dalje mi prikazuje kod usera

Private Sub HideColumns(shName)
Sheets(shName).Columns("W:AE").Hidden = True
End Sub

Run-time error '1004'
Unable to set the Hidden property of the Range class
Re: VBA to Hide columns on multiple sheets 21.05.2024. u 11:54 · pre 29 meseci
izmenjeno 1 put, poslednji put marre23 21.05.2024. u 13:54
  1. marre2321.05.2024. u 13:54zapis iz teksta poruke
#11
Mislim da je negdje kod zaključavanja... samo ne znam kako postaviti da se ne pojavljuje greška...

Isto tako gdje maknuti da adminu bude otključano za unos podataka? Svaki put moram otključavati sheet po sheet

If sh.Range("B" & user_row).Value = "Admin" Then '''' Admin role
sh.Unprotect 1234
sh.Cells.EntireColumn.Hidden = False
sh.Cells.EntireRow.Hidden = False

ThisWorkbook.Unprotect 1234
For Each wsh In ThisWorkbook.Worksheets
wsh.Visible = xlSheetVisible
wsh.Protect 1234
Next wsh
Re: VBA to Hide columns on multiple sheets 28.05.2024. u 14:05 · pre 29 meseci #12
Još nisam uspjela rješiti problem kad se user ulogira pojavljuje se debug a ne znam zašto :(

Private Sub HideColumns(shName)

Sheets(shName).Columns("W:AE").Hidden = True NA OVOM DJELU

End Sub

gdje se treba nalaziti ovaj šifra? Unutar Login forme ili ThisWorkbook?
Re: VBA to Hide columns on multiple sheets 29.05.2024. u 10:56 · pre 29 meseci #13
Nije mi jasno o čemu se radi. Ako hoćeš postavi primer u prilogu pa da probamo da debagujemo.
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme