Left, Mid, Right fonksiyonlar� neden hata verir :kafa:

Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Eski �§al�±�Ÿt�±�Ÿ�±m yerde yazd�±�Ÿ�±m bir makroda right, left ve mid fonkiyonlar�±n�± kullanm�±�Ÿt�±m (ger�§i yazd�±�Ÿ�±m (office 2003) word makrosuydu ama right, left, mid hep ayn�± i�Ÿe yarar, de�Ÿil mi). Kod g�¼zel g�¼zel de �§al�±�Ÿ�±yordu. �°ki g�¼n �¶nce bir arkada�Ÿ�±m kendisine uyarlamak i�§in dosyay�± istedi. Koddaki baz�± detay �§al�±�Ÿmalar�± gereksiz oldu�Ÿundan �§�±karay�±m dedim ama �¶nce bir �§al�±�Ÿt�±rd�±m.

Kod dg de�Ÿi�Ÿkenine de�Ÿer atand�±�Ÿ�± sat�±rda Mid fonksiyonu i�Ÿaretlenerek hata verdi. Eski i�Ÿyerimde VB(6) y�¼kl�¼yd�¼, evde ise (kodu �§al�±�Ÿt�±rd�±�Ÿ�±m esnada) y�¼kl�¼ de�Ÿildi. Eve de VB y�¼kleyince sorun �§�¶z�¼ld�¼.

Kod:
for i = 1 to len(textbox1.text)
...
...
dg = Mid(textbox1.text,  i, 1)
...
...
Next i
�žimdi, "buras�± excel forumu word makrosu da ne oluyor" diyebilirsiniz ama d�¼n benzer bir kodun yer ald�±�Ÿ�± excel dosyas�± da i�Ÿyerimdeki makinada ayn�± �Ÿekilde Mid fonksiyonunda hata verdi. Kodu g�¶zle takip ettim bir hata yoktu, zaten evde de d�¼zg�¼n �§al�±�Ÿ�±yor. Evde VB(6) y�¼kl�¼ i�Ÿyerimde de�Ÿil acaba bundan dolay�± m�± diyorum. Ger�§i bu fonksiyonlar VBA i�§inde de kullan�±ma haz�±r diye biliyorum. Aksi halde bu fonksiyonlar�± kullanmak i�§in dosyan�±n �§al�±�Ÿaca�Ÿ�± b�¼t�¼n makinalara VB mi y�¼kleyece�Ÿim. Sa�§ma sapan bir durum.

Bu arada i�Ÿyerimdeki Excel s�¼r�¼m�¼ XP (2002 oluyor galiba), evdeki ise 2003.

Delirece�Ÿim Right, Left, Mid gibi �¶nemli fonksiyonlar niye �§al�±�Ÿmaz. Ke�Ÿke hata mesaj�±n�± hat�±rlay�±p yazabilseydim.
 
Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Ya nedir bu, ikidir oluyor firefox'tan mıdır artık tr karakterler ilk önizlemede ve göndermede bozuk çıkıyor. mesajı tekrara gönderiyorum.
-------------------------------------------------------------------------------------------

Eski çalıştığım yerde yazdığım bir makroda right, left ve mid fonkiyonlarını kullanmıştım (gerçi yazdığım (office 2003) word makrosuydu ama right, left, mid hep aynı işe yarar, değil mi). Kod güzel güzel de çalışıyordu. İki gün önce bir arkadaşım kendisine uyarlamak için dosyayı istedi. Koddaki bazı detay çalışmaları gereksiz olduğundan çıkarayım dedim ama önce bir çalıştırdım.

Kod dg değişkenine değer atandığı satırda Mid fonksiyonu işaretlenerek hata verdi. Eski işyerimde VB(6) yüklüydü, evde ise (kodu çalıştırdığım esnada) yüklü değildi. Eve de VB yükleyince sorun çözüldü.

Kod:
for i = 1 to len(textbox1.text)
...
...
dg = Mid(textbox1.text,  i, 1)
...
...
Next i
Þimdi, "burası excel forumu word makrosu da ne oluyor" diyebilirsiniz ama dün benzer bir kodun yer aldığı excel dosyası da işyerimdeki makinada aynı şekilde Mid fonksiyonunda hata verdi. Kodu gözle takip ettim bir hata yoktu, zaten evde de düzgün çalışıyor. Evde VB(6) yüklü işyerimde değil acaba bundan dolayı mı diyorum. Gerçi bu fonksiyonlar VBA içinde de kullanıma hazır diye biliyorum. Aksi halde bu fonksiyonları kullanmak için dosyanın çalışacağı bütün makinalara VB mi yükleyeceğim. Saçma sapan bir durum.

Bu arada işyerimdeki Excel sürümü XP (2002 oluyor galiba), evdeki ise 2003.

Delireceğim Right, Left, Mid gibi önemli fonksiyonlar niye çalışmaz. Keşke hata mesajını hatırlayıp yazabilseydim.
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
Verdiği hatayı yazmazsanız çözüm uzak görünüyor.
Hatta bir dosya göderin.
 
Katılım
11 Mart 2005
Mesajlar
13
Bu kodlarınızın VB'in kurulumu ile ilgisi yoktur. VBA anlamında kullanılabilmesi için ise VB'e ihtiyaç duyulmaz.

Tahmini hata sebebiniz,
Kodlarınızın başın Option Explicit yazarak tanımlanmayan değişkenlerin takibini yaptırmışsınız, dg ve i değişkeni VBA'nın tanımadığı bir kelimedir, bunun ne olduğunu VBA'na anlatmalısınız.

Ve bu kodları bir yerden hatırlıyorum sanki hücre içinden rakam veya harfleri ayıracak gibi duruyorlar.
:hey:
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
Tahmini hata sebebiniz,
Kodlarınızın başın Option Explicit yazarak tanımlanmayan değişkenlerin takibini yaptırmışsınız, dg ve i değişkeni VBA'nın tanımadığı bir kelimedir, bunun ne olduğunu VBA'na anlatmalısınız.
Sanmıyorum. Bu durumda for döngüsündeki i değişkeninde de vermesi gerekirdi.
Hatayı mid fonksiyonunun olduğu satırda veriyor.

VB editör pencresinde tools-> references penceresine göz atın.
işaretli olanların yanında MISSING yazan bir eleman var mı?
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Ya nedir bu, ikidir oluyor firefox'tan mıdır artık tr karakterler ilk önizlemede ve göndermede bozuk çıkıyor. mesajı tekrara gönderiyorum.
Evet. Bende yaşadım aynı sorunu. :(
 
Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Son bir kaç gündür yoğunluktan bakamamıştım.

Sn ALPEN

Verdiği hatayı yazmazsanız çözüm uzak görünüyor.
Hatta bir dosya göderin.
demiş fakat VB yi kurduktan sonra hata vermeyi kestiği için hata msg yazamıyorum.

değişkenlerin tanıtılmasına gelince döngüdeki i tanıtılmamış doğrudur ama bu durumda variant olarak varsayılır diye biliyorum ve zaten sorun döngüde değil. bu arada exceldeki kodu şimdi bulamadım, bu wordde yazdığım kod fakat userformdaki kontrollerle işlem yaptığından excel de aynı kullanılabilirdi. Sanırım excele atarkende textbox.text i dg değişkenine atayarak uzun uzun yazmaya son vermişim. Yalnız döngüdeki değişkenler hariç kullandığım tüm değişkenleri tanımladığımı da bildirmeliyim. Yani dg değişkeni string olarak atanmıştır.

Kod çalıştığında VBA Editör ilk Mid fonksiyonunu işaretleyerek hata veriyor (VB yüklü olmayan makinalarda benimki hariç 2 ayrı makinada daha test edilmiş, onaylanmıştır :) )

Çok ilginç bir durum.

Kod:
Private Sub txtAdi_AfterUpdate()
Dim Ilk, Kalan As String
Dim Sayac As Integer

    If Mid((frmAna.txtAdi), 1, 1) = "ı" Then
        Ilk = "I"
        frmAna.txtAdi = Ilk & Format((Mid((frmAna.txtAdi), 2, (Len(frmAna.txtAdi) - 1))), "<")
    ElseIf Mid((frmAna.txtAdi), 1, 1) = "i" Then
        Ilk = "İ"
        frmAna.txtAdi = Ilk & Format((Mid((frmAna.txtAdi), 2, (Len(frmAna.txtAdi) - 1))), "<")
    Else: Ilk = Format((Mid((frmAna.txtAdi), 1, 1)), ">")
    End If
    
    Kalan = ""
    For Sayac = 2 To Len(frmAna.txtAdi)
        If Mid((frmAna.txtAdi), Sayac, 1) = "I" Then
            Harf = "ı"
        ElseIf Mid((frmAna.txtAdi), Sayac, 1) = "İ" Then
            Harf = "i"
        Else: Harf = Format((Mid((frmAna.txtAdi), Sayac, 1)), "<")
        End If
        Kalan = Kalan & Harf
    Next
    
    frmAna.txtAdi = Ilk & Kalan
   
End Sub
Anlaşılacağı üzere kod, textbox nesnesindeki metnin ilk harfi büyük sonrakiler küçük olacak hale getiriyor. Þimdi olsa daha pratik yazardım ama yazılmış, uğraşma deyip geçiyorum. Ah şu üşengeçlik.

Forumda metni yazım düzeni olacak (ilk karakter büyük harf) şekilde düzenleyen bir kod görmüştüm tekrar bulursam bu procedure'yi o kodu
kullanarak değiştirdeceğim. Bulana kadar böyle devam tabi.

Dip Not:
Sn danersin demiş ki:

Evet. Bende yaşadım aynı sorunu
TR karakter sorununu Firefox ile mi yaşadınız yoksa sadece aynı sorunu mu yaşadınız. Ona göre bir daha firefox ile girmeyeyim foruma, bişeyler yazacağım durumlarda sinir etmesin.
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Firefox'la yaşadım. firefox'un karakter kodlamasını TR olarak ayarlıyorum ama forumda dolaşırken arasıra bu ayar değişiyor. :?
 
Üst