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 ...!!!