Soru Userformdaki Comboboxtaki değişim sonrası ile ilgili problemim

Katılım
5 Mayıs 2020
Mesajlar
31
Excel Vers. ve Dili
İng-14.0.6023
Selamlar. Fazlaca userformdan oluşan bir program yazdım. Son userforma geldiğinde kullanıcının bilgileri girmesini ve bu bilgilerle hesaplama yapmasını istiyorum programının. Kullanıcı FlowRateSICalc formundaki calculate tuşuna bastığında PipeMaterial comboboxunda seçtiği pipe material a göre karşılık gelen sayfa2deki b sütunundaki sayıyıda çekip işlem yapmasını istiyorum. Ne yazıkki nasıl yapacağımı bulamadım. Yardımcı olurmusunuz?

Excel olarak yüklemeyi bulamadığım için indirme sayfası olarak hazırladığım exceli ekledim. teşekkürler.

Book1.xlsm - 23 KB
 
Katılım
5 Mayıs 2020
Mesajlar
31
Excel Vers. ve Dili
İng-14.0.6023
Aşağı düştüğü için upp. yardıma ihtiyacım var
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,331
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
DÜŞEYARA fonksiyonunu kullanabilirsiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,331
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu kodları eğer siz yazdıysanız bu soruyu sormamanız gerekir diye düşünüyorum.
 
Katılım
5 Mayıs 2020
Mesajlar
31
Excel Vers. ve Dili
İng-14.0.6023
Bu kodları eğer siz yazdıysanız bu soruyu sormamanız gerekir diye düşünüyorum.
Evet kodları ben yazdım. Hatta temiz dursun diye arama yaptırdığım yeri silmiştim. şu anlık bu problemi çözdüm fakat bu seferde calculate tuşuna bastığımda çekmesi gereken sayıyı başka hesaplatma yapmam gerekiyor fakat typemismatch alıyorum cunku aynı değişkeni 2 defa kullandım. bunu nasıl önleyebilirim. sadece yazdığım kod kısmını atıyorum.
Kod:
Option Explicit
Private Sub PipeMaterialCmb_Change()
Dim pipem As String
Dim a As Double
Dim s2 As Worksheet

Set s2 = Sheets("Sheet2")
pipem = PipeMaterialCmb.Value

a = Application.WorksheetFunction.VLookup(pipem, s2.Range("A1:B17"), 2, 0)

End Sub

Private Sub UserForm_Initialize()
PipeMaterialCmb.RowSource = "PipeMaterial"
End Sub
Public Sub CommandButton1_Click()
Dim lenght, Diameter, temp, ahl As Double
Dim fricfac As Double
Dim a As Double
Dim x, Pi As Double

Call PipeMaterialCmb_Change

lenght = LenghtBox.Value
Diameter = DiameterBox.Value
ahl = AhlBox.Value
temp = TempBox.Value

MsgBox "dffasdfa" + a + ahl

End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,331
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
"a" değişkenini Calculate butonu altında kullanın. Diğerlerine gerek yok gibi görünüyor.
 
Katılım
5 Mayıs 2020
Mesajlar
31
Excel Vers. ve Dili
İng-14.0.6023
"a" değişkenini Calculate butonu altında kullanın. Diğerlerine gerek yok gibi görünüyor.
a = Application.WorksheetFunction.VLookup(pipem, s2.Range("A1:B17"), 2, 0)

bunu yapmassam o sayıları nasıl alabilirm. denedim ama calculate butonu altında olmadı
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,331
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Olmayan nedir anlamadım. Verdiğiniz kod satırını Calculate butonu altına yazacaksınız.
 
Katılım
5 Mayıs 2020
Mesajlar
31
Excel Vers. ve Dili
İng-14.0.6023
Olmayan nedir anlamadım. Verdiğiniz kod satırını Calculate butonu altına yazacaksınız.
yazıyorum fakat hata alıyorum yine. değişkenleride calculate butonu altına getiriyorum fakat yine olmuyor.

Kod:
Public Sub PipeMaterialCmb_Change()
Dim pipem As String
Dim a As Double
Dim s2 As Worksheet

Set s2 = Sheets("Sheet2")
pipem = PipeMaterialCmb.Value

a = Application.WorksheetFunction.VLookup(pipem, s2.Range("A1:B17"), 2, 0)

End Sub
bu satır altında combobox değişince a yı alıyorum. neden calculate butonu altında yazayım anlayamadım. buton altında yazsamda excel vba ya nasıl anlatacağım combobox değişince o değişen şeyi excelde bulması gerektiğini
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,331
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu şekilde "Calculate" altına yazıp deneyiniz. Değişken tanımlamasını artık siz yaparsınız.

C++:
a = Application.WorksheetFunction.VLookup(PipeMaterialCmb.Value, s2.Range("A:B"), 2, 0)
 
Katılım
5 Mayıs 2020
Mesajlar
31
Excel Vers. ve Dili
İng-14.0.6023
Bu şekilde "Calculate" altına yazıp deneyiniz. Değişken tanımlamasını artık siz yaparsınız.

C++:
a = Application.WorksheetFunction.VLookup(PipeMaterialCmb.Value, s2.Range("A:B"), 2, 0)
Selamlar özür dilerim geç cevap verdiğim için.

Object variable not set (Error 91)

hatasını alıyorum nedense. hala çözemedim nasıl tanımlamalıyım variableları. debugda baktım aldığım hata s2.range kısmında ama üst tarafta zaten tanımladım variable olarak. ne yapmalıyım? teşekkür ederim yardımlarınız için.
 
Üst