- iPhone topik
- Samsung Galaxy S25 - végre van kicsi!
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Milyen okostelefont vegyek?
- Mobil flották
- India felől közelít egy 7550 mAh-s Redmi
- Android alkalmazások - szoftver kibeszélő topik
- Profi EKG-s óra lett a Watch Fitből
- Honor 400 Pro - gép a képben
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
-
Mobilarena
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Mutt
senior tag
Szia,
...munkafüzet online térben közös használattal lesz feltöltve...
ez a részt mit jelent? Sharepoint/OneDrive vagy a shared folder?A weben (Sharepoint/OneDrive) a VBA nem műkődik, helyette van az Office Script (csak olyan munkahelyi licensz esetén ahol ezt az admin engedélyezte). Office Scriptben nincs lehetőség aktuális felhasználó beazonosítására, amit ki lehet próbálni hogy felugró ablakban bekérni a felhasználót és azzal tovább menni.
Ha shared folderben van a fájl, akkor műkődik a VBA, de nagy az esély ilyenkor az adatvesztésre/hibás fájlra.
Alternatív lehetőségek:
1) Esetleg amit lehetne tenni, hogy mindenkinek külön fájlja van és Power Query-vel egyesíteni lehet őket.
2) Microsoft Forms használata (ha van licensz).
3) Harmadik opció ha mindegyik felhasználó tud emailt küldeni, akkor küldhetnek egy emailt (pl. elég ha a tárgyba beleteszik honnan dolgoznak, a többi jön a feladóból és email dátumából). Ezt lehet Power Query-vel vagy azonnal Power Automate-el összesíteni egy fájlba (utóbbi megint licensztől függ).üdv
-
Fferi50
Topikgazda
Szia!
Elviekben:
Az Application.Username visszaadja annak a felhasználónak a Windows nevét, aki éppen használja a munkafüzetet. Az első sorban levő neveket ehhez kell hasonlítani úgy, hogy a cella értékéből elhagyod az utolsó 6 karaktert. Így megkapod azt az oszlopot, amit felszabadíthatsz.
Alapesetben a munkalapnak zároltnak kell lennie, hogy a korlátozások érvényesülhessenek. Viszont a zárolást közös használat esetén úgy emlékszem nem lehet feloldani csak kizárólagos megnyitással.
Úgy gondolom mégis inkább a szerkeszthető terület megadása lesz a megoldás, amit előre definiálhatsz és hozzárendelhetsz a Windows userhez. Ezt utána az Excel maga ellenőrzi, a munkalap azon területeit, amelyeket szerkeszteni lehet, a hozzárendelésnél fel kell szabadítani, majd az egész munkalapot zárolni.
Üdv. -
Mutt
senior tag
Szia,
Neked kell sorba rendezni a dátumokat, erre van több megoldás is. A QuickSort elég gyors nagyobb adatsoron is.
Én még annyit kavartam, hogy ha előfordulnának ismétlődő szabad dátumok, akkor azt egy collection-el előbb kiszűrtem.
Private Sub FillDates2()
Dim ws As Worksheet
Dim cell As Range
Dim greenColor As Long
greenColor = RGB(0, 204, 102)
Set ws = ThisWorkbook.Sheets("2025")
Dim datumokColl As New Collection 'collection esetén csak egyedi értékek maradnak meg
Dim datumokArr() 'majd ebbe a tömbbe másoljuk át a kapott értékeket
Dim c As Long
On Error Resume Next 'collection leáll ha duplikáció van, így átugorjuk ezt
For Each cell In ws.UsedRange
If cell.Interior.Color = greenColor And IsDate(cell.Value) Then
datumokColl.Add cell.Value, CStr(cell.Value)
End If
Next cell
On Error GoTo 0
'ha van szabad dátum akkor lehet tovább menni
If datumokColl.Count > 0 Then
'a szabad dátumokat egy tömbbe kell másolni, létrehozzuk a megfelelõ méretû tömböt
ReDim datumokArr(1 To datumokColl.Count)
'átmásoljuk a collection tartalmát a tömbbe
For c = 1 To datumokColl.Count
datumokArr(c) = datumokColl(c)
Next c
'növekvõ sorba rendezzük a dátumokat
Call QuickSort(datumokArr, 1, datumokColl.Count)
'comboxhoz adjuk a dátumokat
For c = 1 To UBound(datumokArr)
Me.ErkezesiDatum.AddItem Format(datumokArr(c), "yyyy.mm.dd")
Me.TavozasiDatum.AddItem Format(datumokArr(c), "yyyy.mm.dd")
Next c
End If
End Sub
'https://stackoverflow.com/questions/152319/vba-array-sort-function
Public Sub QuickSort(vArray As Variant, inLow As Long, inHi As Long)
Dim pivot As Variant
Dim tmpSwap As Variant
Dim tmpLow As Long
Dim tmpHi As Long
tmpLow = inLow
tmpHi = inHi
pivot = vArray((inLow + inHi) \ 2)
While (tmpLow <= tmpHi)
While (vArray(tmpLow) < pivot And tmpLow < inHi)
tmpLow = tmpLow + 1
Wend
While (pivot < vArray(tmpHi) And tmpHi > inLow)
tmpHi = tmpHi - 1
Wend
If (tmpLow <= tmpHi) Then
tmpSwap = vArray(tmpLow)
vArray(tmpLow) = vArray(tmpHi)
vArray(tmpHi) = tmpSwap
tmpLow = tmpLow + 1
tmpHi = tmpHi - 1
End If
Wend
If (inLow < tmpHi) Then QuickSort vArray, inLow, tmpHi
If (tmpLow < inHi) Then QuickSort vArray, tmpLow, inHi
End Subüdv
Új hozzászólás Aktív témák
Hirdetés
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- ROBUX ÁRON ALUL - VÁSÁROLJ ROBLOX ROBUXOT MÉG MA, ELKÉPESZTŐ KEDVEZMÉNNYEL (Bármilyen platformra)
- Vírusirtó, Antivirus, VPN kulcsok
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- ÁRGARANCIA! Épített KomPhone i5 10600KF 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! Samsung Galaxy A50/Samsung Galaxy A51/Samsung Galaxy A52/Samsung Galaxy A53
- ÁRCSÖKKENTÉS LG 24" full HD LED IPS monitor (HDMI, DSUB, jack) eladó
- AKCIÓ! ASUS PRIME Z390-P i5 8600K 16GB DDR4 512GB SSD RX 6600 8GB GDDR6 DEEPCOOL Matrexx55 630W
- Telefon felvásárlás!! Apple Watch SE/Apple Watch SE 2 (2022)
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest