2016-03-31 21 views
0

i metin kutusu çalışma değeri (aya göre 12 sayfa) almalı olduğu bir kullanıcı form inşa ediyorum değiştirmek için. örneğinvba metin kutusu değerini

-

metin kutusu 526 kadar 500 E31 Jan-dec tabaka hücre e5 değeri almak gerekir.

metin kutusu 553 kadar 527 E64 Jan-dec tabaka hücre E38 değeri almak gerekir.

metin kutusu 580 kadar 554 E97 Jan-dec tabaka hücre E71 değeri almak gerekir.

birisi bilgilerin üzerinde üretmek için bir döngü yaratarak ile bana yardımcı olabilir ??

THanks

Private Sub monthlist_Change() 

Dim myarray As Variant 
Dim X As Long 

myarray = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") 

For X = LBound(myarray) To UBound(myarray) 


    If Me.monthlist.Text = myarray(X) And Me.Teamlist.Text = "SDM" Then 

     Me.TextBox500.Value = Worksheets("Functions - " & myarray(X)).Range("e5").Value 

    ElseIf Me.monthlist.Text = myarray(X) And Me.Teamlist.Text = "Client accounts" Then 

     Me.TextBox527.Value = Worksheets("Functions - " & myarray(X)).Range("e38").Value 

    ElseIf Me.monthlist.Text = myarray(X) And Me.Teamlist.Text = "Class action" Then 

     Me.TextBox554.Value = Worksheets("Functions - " & myarray(X)).Range("e71").Value 

    End If 

End Sub 

cevap

0

Eğer I yineleme nerede

Eğer

Me.Controls("TextBox" & i).Value = ... 

kullanmak OP açıklamalar sonra düzenlenmiş = IMAX Imin buna göre

Imin ve Imax ayarlamak sonra

ama l Sadece varsayım monthlist listbox amacıyla tüm aylar isimlerin dizisi ile doldurulur nerede olduğunu ve beni de kodunuzda

Option Explicit 

Private Sub monthlist_Change() 

Dim myMnTBarray As Variant, myMxTBarray As Variant 
Dim i As Integer 
Dim mnTB As Integer, mxTB As Integer 
Dim rngAddress As String 

myMnTBarray = Array(500, 527, 554) '<== here you place the lower bounds of textbox names "numeric" part, corresponding to the 3 "teamlist" possible values 
myMxTBarray = Array(526, 553, 580) '<== here you place the upper bounds of textbox names "numeric" part, corresponding to the 3 "teamlist" possible values 


With Me 
    i = .teamlist.ListIndex 
    mnTB = myMnTBarray(i) 
    mxTB = myMxTBarray(i) 

    Select Case .teamlist.Text 
     Case "SDM" 
      rngAddress = "e5" 
     Case "Client accounts" 
      rngAddress = "e38" 
     Case "Class action" 
      rngAddress = "e71" 
    End Select 
End With 

If rngAddress <> "" Then 
    With Worksheets("Functions - " & Me.monthlist.Text).Range(rngAddress) 
     For i = mnTB To mxTB 
      Me.Controls("TextBox" & i).Value = .Offset(i - mnTB).Value 
     Next i 
    End With 
End If 

End Sub 

aşağıdaki üstlenmeden öneriyoruz. Aşağıdaki

ben kodlama için yeni kod yolu üzerinde benim head..sorry gitti itiraf etmeliyim bir UserForm monthlist ve teamlist ListBoxes

Sub main() 

With UserForm1 
    .monthlist.List = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") 
    .teamlist.List = Array("SDM", "Client accounts", "Class action") 
    .Show 
End With 
Unload UserForm1 

End Sub 
+0

doldurmak için sadece olası bir koddur. Ancak yukarıda belirtilen kodu kopyalamaya çalıştım ve bir hata alıyorum. –

+0

Üzgünüm, daha fazla bilgi vereyim. Kullanıcımın 2 liste kutusu var. Takım listesi (Bu 3 teams..sdm, müşteri hesapları, sınıf eylemi vardır). Aylık (12 ay). Ve her biri etiket ve metin kutusuyla dolu bir çerçevem ​​var (her biri 27). Takımı (ex-sdm) ve ayı (ocak) seçtiğimde. Metin kutusu (500 ila 526), ​​e5 ila e31 arasındaki "İşlevler - Ocak" sayfa aralığındaki verileri seçmelidir. Takım müşteri hesaplarını seçtiğimde (527 - 533) "jan" sayfasından e38 - e64 e64 ​​seçilmelidir. ve eğer takım sınıf eylemleri ise - metin kutusu 554 ila 580 e71 ile e97 arasında seçim yapmalıdır. Her ay 12 çalışma sayfası ve veri değişikliği var. –

+0

Neredeyse bunu anladım. bu yüzden küçük değişiklikler yaptım: 'listedeklist ile' monthlist 'yerine 'i = .teamlist.ListIndex' ve' + 1 '' 'Me.Controls ('TextBox' & i) 'den aldım .Value = .Offset (i - mnTB + 1) .Value'. Düzenlenmiş kodu gör – user3598756