Hücre İçine Tıklandığında Kullanıcıya Değer Girdirme?

Katılım
5 Ocak 2018
Mesajlar
9
Excel Vers. ve Dili
excel 2013
Merhaba Sayın Arkadaşlar,

Değer girdirmek istediğim hücrelerin ilk etapta üzerinde "Lütfen Değer Giriniz.." yazmasını ve bu hücrelere tıklandığında bir pencerenin açılmasını ve bu pencerede kullanıcıya değer girdirilmesini, girilen değerin ise başta tıklanmış olan hücreye aktarılmasını istiyorum.

Konu ile baya bir araştırma yaptım. Fakat kod kullanmayı bilmediğimden ve karşıma benzer örnekler çıktığından derleme yapamadım.

Yardımlarınız için şimdiden teşekkür ederim. İyi Çalışmalar
 
Katılım
13 Ekim 2017
Mesajlar
178
Excel Vers. ve Dili
2003-tr
Altın Üyelik Bitiş Tarihi
13/02/2019
https://www.dosyaupload.com/qaA0

Örnek dosyan burada. Bir hücreye çift tıklayınca "DEĞER GİRİN" diye pencere açılıyor ve girdiğin değer o hücreye geçiyor. Kodu kendinize göre düzenlersiniz. Kodu da aşağıda.

Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Message = "Değer Giriniz"
Title = "Yeni Değer?"
DefaultValue = ""
giris = InputBox(Message, Title, DefaultValue, vbOKCancel)
ActiveCell.Value = giris
End Sub
NOT: Bu işlerden hiç anlamadığınızı varsayarak şöyle izah edeyim. Alt+F11 ile kod bölümüne ulaşırsınız. Soldan Sayfa1'i çift tıklayarak, Sayfa1'e özel gireceğiniz kodları yazarsınız.

Kod:
Worksheet_BeforeDoubleClick
Herhangi bir hücreyi çift tıklattığınız da yapılacak işlemleri yazacağınız yerdir.

Kod:
InputBox
Açılan mesaj penceresi

Kod:
ActiveCell
Çift tıklanmış hücre demek.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,568
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Öncelikle foruma hoş geldiniz ...:)

ALTTuşu basılı iken F11 e aynı anda basarak VBA kısmına geçin

Soldaki sayfa ağacında sayfa1 e tıklayın , sağ taraafa beyaz zemin açılır.
Bu, o sayfanın olay kısmıdır.

Sizin olayınız hücreye çift tıklayınca pencere gelmesi ve oradaki uyarıya göre
hücreye doğru veri girilmesini sağlamak.

Sayfadaki sarı boyanmış hücreye çift tıklayın, açılan pencerede isim girin
ve OK basın.

Daha sonra kendinize göre düzeltmelerle diğerlerini oluşturun.


http://www.dosya.tc/server11/hr3zh2/inputbox.rar.html

Bir dosya örneklemek istediğinizde bir dış server kullanıp linkini buraya aktarabilirsiniz.
 
Katılım
5 Ocak 2018
Mesajlar
9
Excel Vers. ve Dili
excel 2013
ilginiz ve alakanız için çok teşekkür ederim. Hoş bulduk :)

Her hücreye ayrı içeriğe sahip bir kutucuk açtırmak istiyorum. Paylaştığınız kodları kullandığımda tüm hücrelere çift tıklandığında aynı kutucuk açılıyor. Bunu nasıl özelleştirebilirim acaba?

Örneğin, Sayfa1'de B11'e tıklandığında "Santral İsmini Giriniz..", B12'ye tıklandığında "Kömür nem oranını giriniz.." şeklinde.

Bir de hücrelere çift tıklanmadan önce içerisinde değer girilmediğinde görülen, girildikten sonra girilen değeri gösteren bir yapı oluşturabilir miyim?

Örneğin, hiç değer girilmemişken "Veri girmek için çift tıklayınız?" yazacak, çift tıklandıktan sonra girilen değer yazacak, eğer kullanıcı girdiği değeri silerse, yeniden "Veri girmek için çift tıklayınız?" yazacak.

Saygılarımla
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları ilgili sayfanın kod bölümüne (sayfa adına sağ tıklayıp Kod görüntüle deyince açılan sayfaya) yapıştırıp deneyiniz:

Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [B11]) Is Nothing Then GoTo 10
veri = InputBox("Santral ismini giriniz:")
Target = veri
sendkeys "{ENTER}"
10:
If Intersect(Target, [B12]) Is Nothing Then Exit Sub
20:
veri = InputBox("Kömür nem oranını giriniz")
If IsNumeric(veri) = False Then
    MsgBox "Lütfen sayısal değer giriniz!", vbCritical
    GoTo 20
Else
    Target = veri * 1
    sendkeys "{ENTER}"
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B11:B12]) Is Nothing Then Exit Sub
If Target = "" Then
    Application.EnableEvents = False
    Target = "Veri girmek için çift tıklayınız!"
    Application.EnableEvents = True
End If

End Sub
 
Katılım
3 Mart 2008
Mesajlar
281
Excel Vers. ve Dili
2013 Türkçe
Altın Üyelik Bitiş Tarihi
14/05/2022
Çok güzel ayrı ayrı 3 kod hepinize ayrı ayrı teşekkürler :)
 
Katılım
5 Ocak 2018
Mesajlar
9
Excel Vers. ve Dili
excel 2013
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [B11]) Is Nothing Then GoTo 10
veri = InputBox("Santral ismini giriniz:")
Target = veri
SendKeys "{ENTER}"
10:
If Intersect(Target, [B12]) Is Nothing Then GoTo 20
veri = InputBox("Santralde Kullanılan Kömür Cinsini Giriniz:")
Target = veri
SendKeys "{ENTER}"
20:
If Intersect(Target, [B13]) Is Nothing Then Exit Sub
30:
veri = InputBox("Santral Alanında Bulunan Rezerv Miktarını Giriniz:")
If IsNumeric(veri) = False Then
    MsgBox "Lütfen sayısal değer giriniz!", vbCritical
    GoTo 30
Else
    Target = veri * 1
    SendKeys "{ENTER}"
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B11:B12:13]) Is Nothing Then Exit Sub
If Target = "" Then
    Application.EnableEvents = False
    Target = "Veri girmek için çift tıklayınız!"
    Application.EnableEvents = True
End If

End Sub
Sizden aldığım kodu ihtiyacım olan hücreleri çoğaltmak için kullandım. Yalnız hata veriyor. Sanırım 10: 20: olayını anlayamadım. Hatamı söylerseniz sevinirim.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Kod:
If Intersect(Target, [B11:B12:13]) Is Nothing Then Exit Sub
Yerine

Kod:
If Intersect(Target, [B11:B13]) Is Nothing Then Exit Sub
şeklinde deneyin.

Eğer kod çalışmazsa koddaki

Kod:
    Application.EnableEvents = False
satırı kodların çalışmasını engellemiştir. Düzeltmek için aşağıdaki makroyu bir kere çalıştırın:

Kod:
sub aktif()
    Application.EnableEvents = True
End Sub
 
Katılım
5 Ocak 2018
Mesajlar
9
Excel Vers. ve Dili
excel 2013
Kod:
If Intersect(Target, [B11:B13]) Is Nothing Then Exit Sub
Yukarıda söylemiş olduğunuz düzeltmeyi uygulayınca kod çalıştı. Herhangi bir problem çıkmadı teşekkür ederim.

Yalnız çift tıklamadan, hücreyi tek tıkla seçerek de veri girişi yapılabiliyor. Bunu nasıl engellerim?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Maalesef bu isteğinizi yapamadım. Ayrıca neden kolayca veri girmek varken zorlaştırıyorsunuz ki?
 
Katılım
5 Ocak 2018
Mesajlar
9
Excel Vers. ve Dili
excel 2013
Sektörde öyle kişiler var ki nereye ne yazacağını bilmiyor. Sonrasında da sizin raporunuz doğru değil vs. şeklinde acımasız yorumlar yapıp kendi bilgisizliklerini size boyutluyorlar. Bu sebeple.

İlginiz için çok teşekkür ederim. Bir sorum daha olacak size.

Bir hücredeki formül sonucu 2500 ve üzeri bir değer hesaplandığında, "Santral verilerini kontrol ediniz?" şeklinde bir uyarı çıkartmak istiyorum. Bunu nasıl gerçekleştiririm acaba.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Farklı yöntemler kullanılabilir. Örneğin A1'deki veri için B1 hücresine:

Kod:
=EĞER(A1>=2500;"Santral verilerini kontrol ediniz!";"")
formülünü yazarsanız A1 2500 ve üstü olunca uyarı çıkar.

Msgbox şeklinde isterseniz makro ya da veri doğrulama kullanmak gerekir. Ancak bunun için de dosya yapınız ve o hücrenin hangi durumlarda değiştiğinin bilinmesi gerekir. Örnek bir dosya paylaşırsanız daha iyi olur.
 
Katılım
5 Ocak 2018
Mesajlar
9
Excel Vers. ve Dili
excel 2013
Bu şekilde aktif olarak bilgi veren ve sorun çözen bir forum olduğu için çok mutlu oldum. Emeği geçen herkesin başarılarının devamını dilerim.

Yapmak istediğim şey "KIYASLAMA" sayfasındaki B15 hücresinde yer alan değeri 2.350 ile 2.450 arasında olup olmadığını sorgulatıp, değilse "VERİ GİRİŞİ" sayfasına gidip bir textbox açılmasını ve bu textbox'ın başlığında "SANTRAL VERİLERİNİ KONTROL EDİNİZ.." alt satırında ise aşağıdaki gibi maddelerin yer almasını istiyorum.

*Santral Alanında Bulunan Toplam Rezerv Miktarı
*Mevcut Rezervle Santralin Elektrik Üretim Süresi
*Santral Dizaynına Bağlı Elektrik Üretim Miktarı

Şimdiden teşekkür ederim. İyi Çalışmalar
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba Sayın tdanisman, foruma hoşgeldiniz.

Gördüğüm kadarıyla örnek belge ile desteklenmemiş, afaki bir soruya bazı üyeler, olsa olsa yöntemiyle fal bakar gibi çözüm önerilerinde bulunmuş ve siz de;
bu önerilere şu oldu bu olmadı gibi cevaplar yazmışsınız.

Bu yöntemle nihai sonuca ulaşmanız bence güç.

Sorunuzu;
-- gerçek belgenizle aynı yapıda
(satır/sütun/sayfa yapıları, işlem yapılması istenilen alanlar, tarih/sayı/metin gibi veri türü, başlık konumları gibi) ,
-- olması gereken nihai sonuçların elle yazılarak doldurulduğu, bu sonuçlara nasıl ulaşıldığının tereddüte yar vermeyecek şekilde net olarak açıklandığı
(anlatımları metin kutularına yazmanız iyi olur) ,
-- varsa kullanılan formüller/userformlar/kodlar içerisinde ve çalışır durumda olacak şekilde
(sorunlu, sonuç alamadığınız formül/kod varsa bunu sayfadaki metin kutularına açıklayarak),
bir örnek belge üzerinden sorarsanız daha hızlı ve net çözüme ulaşmanız kolaylaşır.

Örnek belge yükleme yöntemine ilişkin kısa açıklama cevabımın altındaki İMZA bölümünde var.

Soruyu bu şekilde netleştirirseniz bir üye mutlaka çözüm önerisinde bulunacaktır ve sonuca ulaşma yolunda mesafe alınabilecektir diye düşünüyorum.
.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu soru daha uzayacak gibi görünüyor :)

Aşağıdaki makroyu çalıştırdığınızda belirttiğiniz işlemleri yapacaktır:

Kod:
Sub kontrol()
Set s1 = Sheets("KIYASLAMA")
Set s2 = Sheets("VERİ GİRİŞİ")
If s1.[B15] < 2350 Or s1.[B15] > 2450 Then
    s2.Activate
    MsgBox "Santral Alanında Bulunan Toplam Rezerv Miktarı" & Chr(10) & _
           "Mevcut Rezervle Santralin Elektrik Üretim Süresi" & Chr(10) & _
           "Santral Dizaynına Bağlı Elektrik Üretim Miktarı", vbCritical, "SANTRAL VERİLERİNİ KONTROL EDİNİZ"
End If
End Sub
 
Son düzenleme:
Katılım
5 Ocak 2018
Mesajlar
9
Excel Vers. ve Dili
excel 2013
Bilgilendirmeniz için teşekkür ederim. Hazıra konmaktansa, örnek bir uygulama alıp akılda daha da kalıcı olsun diye kalanı kendim yapmak istemiştim. Bu düşünce ile yaklaştığımdan çözümü geciktirdiğimin farkında değilim. Kusura bakmayın.

Dosya indirme linki: https://yadi.sk/i/N6tfa37r3REHYH

KIYASLAMA sayfasında İçini kırmızı ile doldurduğum hücredeki değerin karşılığının 2.350 ile 2.450 arasında olup olmadığını sorgulatıp, değilse "VERİ GİRİŞİ" sayfasına gidip bir textbox açılmasını ve bu textbox'ın başlığında "SANTRAL VERİLERİNİ KONTROL EDİNİZ.." alt satırında ise aşağıdaki gibi maddelerin yer almasını istiyorum. Aynı zamanda textboxın tamam tuşuna basınca kapanmasını istiyorum.

*Santral Alanında Bulunan Toplam Rezerv Miktarı
*Mevcut Rezervle Santralin Elektrik Üretim Süresi
*Santral Dizaynına Bağlı Elektrik Üretim Miktarı

Bir diğer isteğim ise KIYASLAMA sayfasında içini sarı ile doldurduğum metin formüle dayalı bazı değerler içeriyor. Görüldüğü üzere 10495938293 şeklinde bir sayı var. Bu sayıyı 1000 ayırıcısı ile bir türlü ayıramadım. Bunu nasıl yapabilirim acaba?

Teşekkürler
 
Katılım
5 Ocak 2018
Mesajlar
9
Excel Vers. ve Dili
excel 2013
Bu soru daha uzayacak gibi görünüyor :)

Aşağıdaki makroyu çalıştırdığınızda belirttiğiniz işlemleri yapacaktır:

Kod:
Sub kontrol()
Set s1 = Sheets("KIYASLAMA")
Set s2 = Sheets("VERİ GİRİŞİ")
If s1.[B15] < 2350 Or s1.[B15] > 2450 Then
    s2.Activate
    MsgBox "Santral Alanında Bulunan Toplam Rezerv Miktarı" & Chr(10) & _
           "Mevcut Rezervle Santralin Elektrik Üretim Süresi" & Chr(10) & _
           "Santral Dizaynına Bağlı Elektrik Üretim Miktarı", vbCritical, "SANTRAL VERİLERİNİ KONTROL EDİNİZ"
End If
End Sub
Teşekkür ederim. Yalnız belirtilen işlemi otomatik olarak yaptıramadım. kod sayfasından RUN deyince işlemi yapıyor.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Ne zaman/Ne olduğunda otomatik çalışması gerekiyor?
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba YUSUF Bey.

Aslında soru sahibi belgenin işlem akışını net ifade etmiyor sanırım.

Belgeyi diyelim ki kullanan benim:
-- Ne yapacağım VERİ GİRİŞ sayfasına değerleri yazacağım.
-- Hangi değerleri? Elbette sabit olan değerler (formüllü hücreler kapsam dışı).

Konu sahibinin belgesinde KIYASLAMA B15'deki formül, ilgili hücrelerdeki formüllere göre yerine koyma yöntemiyle ilerlendiğinde aşağıdaki hali alıyor.
.
Kod:
=[COLOR="Red"]'VERİ GİRİŞİ'!B1*[/COLOR]'VERİ GİRİŞİ'!B13*[COLOR="blue"]'VERİ GİRİŞİ'!B21[/COLOR]*100/24/([COLOR="Blue"]'VERİ GİRİŞİ'!B4[/COLOR]*'VERİ GİRİŞİ'!B14[COLOR="red"]*860[/COLOR]*('VERİ GİRİŞİ'!B16*(100-[COLOR="blue"]'VERİ GİRİŞİ'!B6[/COLOR])))
-- Formülde, KIYASLAMA B19'daki formüldeki 860 sayısı VERİ GİRİŞ sayfası B1'deki değer ise 'VERİ GİRİŞİ'!B1 ve 860 sayıları silinebilir (kırmızı işaretledim).
-- Formülün sonucunda kontrol edilmesi istenilen hücreler VERİ GİRİŞ B13, B14 ve B16 olduğuna göre anladığım kadarıyla;
B21 yerine 1375, B4 yerine 333, B6 yerine 16,67 yazılabilir (mavi işaretledim).

Bence asıl sorun; formülü etkileyen ancak konu sahibinin kontrol edilmesini istemediği, VERİ GİRİŞ sayfasında formül içermeyen sabitler olan
B1, B4, B6, B21 hücreleri (yukarıda belirttim) boşsa, beklenmeyen değer varsa ne olacağı.
Hatta bu konu sonuca ulaştığında KIYASLAMA sayfası E sütununa yönelik sorunun da ardından geleceğini sanıyorum.

Yoksa; VERİ GİRİŞ sayfası için Change kodu oluşturulup, hedef olarak B13, B14 ve B16 gösterilip, yazdığınız kod çağrılabilir veya formül kod içerisine alınarak hesaplama orada da yaptırılabilir.
.
 
Üst