[]

Excel VBA Bilenler Az Baksın

Gençler,

Benim gibi Excel VBA'e gönül vermiş gençler bir fikir versin aşağıdaki konuyu siz olsanız nasıl çözerdiniz.

Vardiya yönetimi için bir excel dosyası hazırlıyorum. Linkteki resimdeki gibi bir userform var kafamda. En üstte mağazanın genel durumu, alttaki çerçeve içinde de çalışanların gün gün vardiyaları olacak diye düşündüm.

i.hizliresim.com

Eklediğim örnekte alt kısımda A harfi yerine çalışanlar gelecek. Bu örnek 7 çalışana kadar yapılmış durumda ancak 8. çalışan olursa dosyayı revize etmek gerekecek. Çalışan sayısını algılayıp ona göre gizle / göster yapabilirim ancak ileride 20 çalışana ulaşacak diye şimdiden 20şer satır için kodlama yapmayı gereksiz gördüm.

Öte yandan yukarıya çalışan veya gün filtresi de koyamıyorum. Programı kullanacak kişinin ekteki şekilde bir görünüme ihtiyacı var.

İşin bir kolayı var mıdır benim bilmediğim, onu sormak istedim.

Yanıtlarınız için şimdiden teşekkür ederim.

 
Cakabo selam,

Ben olsam ilk olarak VBA değil, access veritabanı kullanan bir VB formu yazardım. Hem birden fazla kullanıcı aynı anda veri girişi yapabiliyor (çok gerekli mi bilmiyorum) hem de veritabanı kodlamadan bağımsız bir yerde durduğu için veri güvenliği açısından daha iyi.

Kodlama bölümüne gelirsek;

- Öncelikle A'lar yerine gelecek kullanıcılar için bir tablo olmalı. Atıyorum sayfa1. Bu sayfada yer alan kullanıcı sayısı 'boş hüceyi bulana kadar çalışan döngü' ile tespit edilebilir. Örn:

for i=1 to 2000
sayac = sayac + 1
if cells(i,1) = "" then
break
end if
next i // kodlar tam doğru olmayabilir kafadan yazdım.

Daha sonra bu userform'u kullanıcı saysına göre (yani sayac değişkeni içindeki sayıya göre) dizayn edecek bir kodlama lazım.

Ayrıca herbir günün tek formda görünmesi gerekmiyorsa tarih bazlı bir sayfa yapardım.

Yani örneğin formu açtık. Bugünün ya da en son veri girişi yapılan günün tablosunu gösterecek. Sağa - sola oklar ile günler arasında gezilebilecek. Bu formda yer alacak bilgiler de bir tabloda tutulacak (mesela sayfa2) bu tablo 2 referansa bağlı olacak. 1. çalışan, 2. tarih.

bu iki referansı kullanan bir çoklu değişken kullanılmalı degisken[i] tarzında yani. her bir indis ise yarımşar saatlik dilimi simgelemeli. örneğin degisken[6] saat 10:30'u simgeleyecek. veri girişi de degisken[i]'e indis artırılarak girilecek.

umarım kafamdaki modeli anlatabilmişimdir.
  • himmet dayi  (14.12.15 17:56:37) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.