kodda çalışmayan satır?

Katılım
11 Kasım 2005
Mesajlar
90
Kod:
Sub Makro3()
Dim l(100)
Dim a(100, 100) As Variant
Dim c(100) As Variant
Dim x(100) As Variant
Dim tep(100) As Variant
Dim mom(100)
Dim i(100)
Dim ı, j, k, r, p, e, y, n, t, u, d, h, q, s As Integer
'gergisiz durum için hesap
datalarin_istenmesi:
p = InputBox(Prompt:="Aşıklar Kaç Açıklıkta Bir Sürekli Geçecektir ?", Title:="Açıklık Sayısı")
If p = "" Then GoTo 2
n = p - 1
konumno = 3 * p
For say = 0 To konumno
Sheets("sayfa2").Cells(48 + say, 1) = say
Next say
For d = 0 To n
l(d) = CDec(InputBox(Prompt:=d + 1 & "." & "" & " Açıklığın Uzunluğu ?", Title:="Açıklık Uzunlukları (m)"))
If l(d) = "" Then GoTo 2 ------------>>>işte bu satır çalışmıo..
Next d
l(p) = l(n)
kuvvet_denklem_takiminin_olusturulması:
For e = 1 To n
For y = 1 To n
a(e, y) = 0
Next y
Next e
For k = 1 To n
a(k, k) = (1 / 3) * (l(k - 1) + l(k))
c(k) = -1 * ((1 / 24) * (l(k - 1) ^ 3 + l(k) ^ 3))
Next k
For t = 1 To n - 1
a(t, t + 1) = (1 / 6) * l(t)
Next t
For u = 2 To n
a(u, u - 1) = (1 / 6) * l(u - 1)
Next u

denklemtakımınıncozumu_ve_mesnet_momenlerinin_hesabı:
For ı = 1 To n - 1
For j = ı + 1 To n
If a(j, ı) = 0 Then GoTo 25
r = a(j, ı) / a(ı, ı)
For h = ı + 1 To n
a(j, h) = a(j, h) - a(ı, h) * r
Next h
c(j) = c(j) - c(ı) * r
25: Next j
Next ı
x(n) = c(n) / a(n, n)
For ı = 1 To n - 1
h = n - ı
For j = h + 1 To n
c(h) = c(h) - x(j) * a(h, j)
x(h) = c(h) / a(h, h)
Next j
Next ı
x(0) = 0
x(p + 1) = x(n)
x(p) = 0
For u = 0 To p
Sheets("sayfa2").Cells(48 + u, 2) = x(u) * Range("b16")
Sheets("sayfa2").Cells(48 + u, 8) = x(u) * Range("b16")
Sheets("sayfa2").Cells(48 + u, 14) = x(u) * Range("b16")
Sheets("sayfa2").Cells(48 + u, 3) = x(u) * Range("b15")
Next u
mesnettepkilerinin_bulunması:
For w = 0 To p
tep(w) = (l(w) / 2) + (x(w + 1) - x(w)) / l(w)
Sheets("sayfa2").Cells(48 + w, 4) = tep(w) * Range("b16")
Sheets("sayfa2").Cells(48 + w, 10) = tep(w) * Range("b16")
Sheets("sayfa2").Cells(48 + w, 16) = tep(w) * Range("b16")
Sheets("sayfa2").Cells(48 + w, 5) = tep(w) * Range("b15")
Next w
acıklık_momentlerinin_bulunması:
For q = 0 To n
mom(q) = CDec((tep(q) ^ 2 / 2) + x(q))
Sheets("sayfa2").Cells(48 + q, 6) = mom(q) * Range("b16")
Sheets("sayfa2").Cells(48 + q, 12) = mom(q) * Range("b16")
Sheets("sayfa2").Cells(48 + q, 18) = mom(q) * Range("b16")
Sheets("sayfa2").Cells(48 + q, 7) = mom(q) * Range("b15")
Next q
    penbyk = WorksheetFunction.Max(x(), mom())
    nenbyk = WorksheetFunction.Min(x(), mom())
    sonenby = IIf(Abs(penbyk) > Abs(nenbyk), penbyk, nenbyk)
    Range("d15") = Abs(sonenby) * Range("b16")
    Range("f15") = Abs(sonenby) * Range("b16")
    Range("h15") = Abs(sonenby) * Range("b16")
    Range("e15") = Abs(sonenby) * Range("b15")
'tek gergili durum için hesap
datalarin_olusmasi:
s = 2 * p
n = s - 1
For d = 0 To n
i(2 * d) = l(d) / 2
i(2 * d + 1) = l(d) / 2
Next d
i(s) = i(n)
kuvvet_denklem_takiminin_olusturulması1:
For e = 1 To n
For y = 1 To n
a(e, y) = 0
Next y
Next e
For k = 1 To n
a(k, k) = (1 / 3) * (i(k - 1) + i(k))
c(k) = -1 * ((1 / 24) * (i(k - 1) ^ 3 + i(k) ^ 3))
Next k
For t = 1 To n - 1
a(t, t + 1) = (1 / 6) * i(t)
Next t
For u = 2 To n
a(u, u - 1) = (1 / 6) * i(u - 1)
Next u

denklemtakımınıncozumu_ve_mesnet_momenlerinin_hesabı1:
For ı = 1 To n - 1
For j = ı + 1 To n
If a(j, ı) = 0 Then GoTo 26
r = a(j, ı) / a(ı, ı)
For h = ı + 1 To n
a(j, h) = a(j, h) - a(ı, h) * r
Next h
c(j) = c(j) - c(ı) * r
26: Next j
Next ı
x(n) = c(n) / a(n, n)
For ı = 1 To n - 1
h = n - ı
For j = h + 1 To n
c(h) = c(h) - x(j) * a(h, j)
x(h) = c(h) / a(h, h)
Next j
Next ı
x(0) = 0
x(s + 1) = x(n)
x(s) = 0
For u = 0 To s
Sheets("sayfa2").Cells(48 + u, 9) = x(u) * Range("b15")
Next u
mesnettepkilerinin_bulunması1:
For w = 0 To s
tep(w) = (i(w) / 2) + (x(w + 1) - x(w)) / i(w)
Sheets("sayfa2").Cells(48 + w, 11) = tep(w) * Range("b15")
Next w
acıklık_momentlerinin_bulunması1:
For q = 0 To n
mom(q) = CDec((tep(q) ^ 2 / 2) + x(q))
Sheets("sayfa2").Cells(48 + q, 13) = mom(q) * Range("b15")
Next q
penbyk = WorksheetFunction.Max(x(), mom())
    nenbyk = WorksheetFunction.Min(x(), mom())
    sonenby = IIf(Abs(penbyk) > Abs(nenbyk), penbyk, nenbyk)
       Range("g15") = Abs(sonenby) * Range("b15")
'çift gergili durum için hesap
datalarin_olusmasi2:
s = 3 * p
n = s - 1
For d = 0 To n
i(3 * d) = l(d) / 3
i(3 * d + 1) = l(d) / 3
i(3 * d + 2) = l(d) / 3
Next d
i(s) = i(n)
kuvvet_denklem_takiminin_olusturulması2:
For e = 1 To n
For y = 1 To n
a(e, y) = 0
Next y
Next e
For k = 1 To n
a(k, k) = (1 / 3) * (i(k - 1) + i(k))
c(k) = -1 * ((1 / 24) * (i(k - 1) ^ 3 + i(k) ^ 3))
Next k
For t = 1 To n - 1
a(t, t + 1) = (1 / 6) * i(t)
Next t
For u = 2 To n
a(u, u - 1) = (1 / 6) * i(u - 1)
Next u

denklemtakımınıncozumu_ve_mesnet_momenlerinin_hesabı2:
For ı = 1 To n - 1
For j = ı + 1 To n
If a(j, ı) = 0 Then GoTo 27
r = a(j, ı) / a(ı, ı)
For h = ı + 1 To n
a(j, h) = a(j, h) - a(ı, h) * r
Next h
c(j) = c(j) - c(ı) * r
27: Next j
Next ı
x(n) = c(n) / a(n, n)
For ı = 1 To n - 1
h = n - ı
For j = h + 1 To n
c(h) = c(h) - x(j) * a(h, j)
x(h) = c(h) / a(h, h)
Next j
Next ı
x(0) = 0
x(s + 1) = x(n)
x(s) = 0
For u = 0 To s
Sheets("sayfa2").Cells(48 + u, 15) = x(u) * Range("b15")
Next u
mesnettepkilerinin_bulunmasi2:
For w = 0 To s
tep(w) = (i(w) / 2) + (x(w + 1) - x(w)) / i(w)
Sheets("sayfa2").Cells(48 + w, 17) = tep(w) * Range("b15")
Next w
acıklık_momentlerinin_bulunmasi2:
For q = 0 To n
mom(q) = CDec((tep(q) ^ 2 / 2) + x(q))
Sheets("sayfa2").Cells(48 + q, 19) = mom(q) * Range("b15")
Next q
    penbyk = WorksheetFunction.Max(x(), mom())
    nenbyk = WorksheetFunction.Min(x(), mom())
    sonenby = IIf(Abs(penbyk) > Abs(nenbyk), penbyk, nenbyk)
    Range("ı15") = Abs(sonenby) * Range("b15")
GoTo 4
2: MsgBox Prompt:="Değer Girilmediğinden İşlem Yapılmadı!"
4: End Sub


belirtiğim satırdaki if komutu çalışmıyo...yani l(d) değerleri dış ortamdan istenirken eğer girilmez ise 2 numaralı yani "2: MsgBox Prompt:="Değer Girilmediğinden İşlem Yapılmadı!"
4: End Sub" satıra gidip makroyu kapamıo...nedenini anlamadım bir türlü...aynı i
şlemi en başta dikkat ederseniz p değişkenini soraraken uyguladım..orda çalışan şey burda neden çalışmıyo...l nin dizi olmasıylamı alakalı...???


NOT: kodu denerken sayfa2 de uygulayınız ...!!!
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
n değişkeni 100 den fazla olabilir.
 
Katılım
11 Kasım 2005
Mesajlar
90
yoo en fazla 5 falan oluyo....2 için bile hata vweri..l(d) değerlerini inputbox la alırken boş veya cancel la basınca bu hata çıkıyo sadece
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
l(d) = CDec(InputBox..................


sorun cdec fonksiyonunu kullanmanızda, boşluk bir metin oarak kabul edildiğinden hata veriyor. Bunu kaldırın.

l(d) = InputBox..................
 
Katılım
11 Kasım 2005
Mesajlar
90
anladım levent bey, ama cdec i kaldırırsamda sonuçlar yanlış çıkıo..önceden cdec yoktu daha sonra baktımki sonuçlar yanlış çıkıyo onu başına ekledim...şöyleki;

l(d) lere küsüratlı sayı girdiğimde onları üste veya alta yuvarlayıp işlem yapıo...o zamanda benim tüm sonuçlar yanlış çıkıyo....girilen l(d) değerleride hep küsüratlı oluyo ne yazıkki :((( napıcam ben....
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yuvarlaması için bir sebep göremedim.
 
Katılım
11 Kasım 2005
Mesajlar
90
hmm şimdi aklıma geldi...düşündümde eğer boşluklu metin olarak algılıyosa onu l(d) eğer metin ise onu goto 2 ye yönlendirsek sorun çözülürmüki... nası yazcam o şartı bide :)
 
Katılım
11 Kasım 2005
Mesajlar
90
ama yuvarlıyo ... isteseniz kaldırın cdec sonuçlara bakın bide cdec i koyunca sonuçlara bakın..tamamen farklı sonuçlar verio..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi denermisiniz.

[vb:1:3e009225b4]For d = 0 To n
sor = InputBox(Prompt:=d + 1 & "." & "" & " Açıklığın Uzunluğu ?", Title:="Açıklık Uzunlukları (m)")
If IsNumeric(sor) = False Then GoTo 2
l(d) = CDec(sor)
Next d
[/vb:1:3e009225b4]
 
Katılım
11 Kasım 2005
Mesajlar
90
:))) yapacağınızdan emindim ...mükemmel olmuş...sizsiz bu site çöker ben söliim..adminleriniz iyi baksın size :)

Allah razı olsun...çok teşekkürler...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Rica ederim. Bu site hiç bir zaman çökmez endişeniz olmasın, benim de diğer üye arkadaşlardan hiç bir farkım yok, ayrıca siteye emek veren tüm yönetici ve üye arkadaşlarımızın emeklerini gözardı ederek haksızlık etmeyelim. Bu forum hepimizin işbirliği ve gayreti sayesinde ilerlemektedir.
 
Katılım
11 Kasım 2005
Mesajlar
90
tabikide dedikleriniz doğruda...ben sitenin büyük bir yükünü çektiğiniz için abarttım biras..yoksa dediklerinizde haklısınız....;)
 
Üst