• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Makroda F5 tuşuna bastığımda çıkan hata. Yardım!!

Katılım
2 Ocak 2013
Mesajlar
2
Excel Vers. ve Dili
Excel'10 Türkçe
Arkadaşlar excel 2007 visual basicte bir makro yazdım daha ilk satırda (koyu yazılan) şu hatayı verdi "compile error: constant expression required" acaba neyi yanlış yapıyorum?

Kodlar şu şekilde;

Private Sub CommandButton1_Click()
Dim açıklık_açısı As Double
Dim f(b) As Double
Dim ff(b) As Double
For i = 2 To 21
If Sayfa1.Cells(i, 1) = "" Then
Sayfa1.Cells(i, 1) = ""
Else
Sayfa1.Cells(i, 9) = Sayfa1.Cells(i, 1)
End If
Next
açıklık_açısı = Atn((Sayfa1.Cells(3, 7) - Sayfa1.Cells(2, 7)) / (Sayfa1.Cells(3, 8) - Sayfa1.Cells(2, 8))) * 200 / 3.141592653
If açıklık_açısı < 200 Then
açıklık_açısı = açıklık_açısı + 200
End If
Sayfa1.Cells(2, 3) = açıklık_açısı
End Sub
 
Arkadaşlar excel 2007 visual basicte bir makro yazdım daha ilk satırda (koyu yazılan) şu hatayı verdi "compile error: constant expression required" acaba neyi yanlış yapıyorum?

Kodlar şu şekilde;

Kod:
Dim f(b) As Double
Dim ff(b) As Double


2 adet array tanımlamışsınız. üst sınıra b demişsiniz. VBA'nin (VB değil; dikkat) b'nin ne olduğu konusunda bir fikri yok. belirtilmesini istiyor.

Kod:
Dim f() As Double
Dim ff() As Double

...
...
...

ReDim f(100) As Double
ReDim ff(5) As Double

...
...
gibi.




ayrıca Pi değeri için 3.141592653 sabit rakamı yazmak yerine

Kod:
4 * Atn(1)

veya
Kod:
WorksheetFunction.Pi

yazılabilir.




dipnot:
mesaj yazarken cevap panelinin üstündeki # butonuna tıklarsanız kod etiketlerini otomatik olarak ekler. kodunuzu araya kopyalarsınız. benim örneklerde olduğu gibi düzgün görünmesini sağlarsınız.
 
Dim f(b) As Double
Dim ff(b) As Double

bu satırların bir anlamı var mı? Sorun bunlardan gibi görünüyor. Makroda bunlara herhangi bir başvuru göremiyorum. O satırları çıkarıp dener misiniz?
 
kaldı ki, kod içinde bu array'lerin kullanımı yok. gerçek dosyanızdaki kodda var ve işe yarıyorsa bilememekle birlikte, bu hali ile kullanıyorsanız onları silin gitsin derim.
 
Dim f(b) As Double
Dim ff(b) As Double

bu satırların bir anlamı var mı? Sorun bunlardan gibi görünüyor. Makroda bunlara herhangi bir başvuru göremiyorum. O satırları çıkarıp dener misiniz?

kullanılmayan bir değişken olabilir ancak bu sorun yaratmaz. neyin sorun yarattığını bir önceki mesajımda bulabilirsiniz.
 
Teşekkürler, yeni bir şey öğrendim.


rica ederim.

tabii kullanılmayacak bir değişkeni deklare etmeye ne gerek var değil mi :)

genellikle mevcut bir koddan başka bir kod yazarken silmeyi atlarız...
 
Bazen ben de bazı satırları unutuyorum. Kodun düzgün çalışıp çalışmaıdığını kontrol etmek için ilave ettiğim (bir hücreye bulunan değeri yazdıran gibi) satırlar kalıyor. Çalışmasına engel olmadığı için önemsemiyorum :( Sonra görünce bilen biri gördüyse kesin "ne saçmalamış bu" diye düşünmüştür diyorum :)
 
cevaplarınız için teşekkür ederim içindeki b'leri silince o hatayı vermedi fakat şimdide "run time error 6; overflow" hatası veriyor
 
dosyanızı yükleyin bir bakalım.

en büyük rakamsal veriyi tutan data tipi Double olduğu için sorun olmaması gerekiyor.

bir ihtimal Atn fonksiyonu belli bir data tipi için çalışıyor olabilir.
 
ayrıca kodu aşağıdaki gibi kısaltmak mümkün. hataya çözüm değildir. mevcut kodun yeniden düzenlenmiş halidir.

Kod:
Private Sub CommandButton1_Click()

    Dim açıklık_açısı As Double
    
    With Sayfa1
        .Range("I2:I21") = .Range("A2:A21")
        açıklık_açısı = Atn((.Cells(3, 7) - .Cells(2, 7)) / (.Cells(3, 8) - .Cells(2, 8))) * 200 / 3.141592653
        If açıklık_açısı < 200 Then açıklık_açısı = açıklık_açısı + 200
        .Cells(2, 3) = açıklık_açısı
    End With

End Sub
 
Geri
Üst