• DİKKAT

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

kodda çalışmayan satır?

  • Konbuyu başlatan Konbuyu başlatan dmzkn
  • Başlangıç tarihi Başlangıç tarihi
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 ...!!!
 
n değişkeni 100 den fazla olabilir.
 
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
 
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..................
 
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....
 
Yuvarlaması için bir sebep göremedim.
 
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 :)
 
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..
 
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]
 
:))) 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...
 
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.
 
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....;)
 
Geri
Üst