Board logo

標題: 如何使 TextBox3.Text 為一個 TextBox(i).Text 來使用 [打印本頁]

作者: yangjie    時間: 2010-10-7 00:32     標題: 如何使 TextBox3.Text 為一個 TextBox(i).Text 來使用

請教各位大大:
VBA中表單內某 Sub
    For i = 2 To lastrow1
            If Cells(i, 4) = TextName.Text Then
                TextBox3.Text = Sheets("學生資料").Cells(i, 6)
                TextBox4.Text = Sheets("學生資料").Cells(i, 7)
                TextBox5.Text = Sheets("學生資料").Cells(i, 8)
                TextBox6.Text = Sheets("學生資料").Cells(i, 9)
           endif
      next
      loop中  當找到第二個 Cells(i, 4)
       應如何使  Sheets("學生資料").Cells(i, 6)填入 TextBox7.Text
       也就是說如何使   TextBox3.Text  為一個  TextBox(i).Text  來使用
謝謝協助
作者: GBKEE    時間: 2010-10-7 08:09

回復 1# yangjie
使用陣列 Ar = Array(TextBox3, TextBox4, TextBox5....)
For i = 2 To lastrow1
        If Cells(i, 4) = TextName.Text Then
            For ii = 0 To UBound(AR)
                AR(ii).Value = Sheets("學生資料").Cells(i, 6 + ii)
            Next
        End If
Next
作者: yangjie    時間: 2010-10-7 09:38

謝謝GBKEE
   我的TextBox有80個
     陣列 Ar = Array(TextBox3, TextBox4, TextBox5....)
       是否一定要寫至TextBox80?
   Ar 設定語法
      Dim ar(80)  as  string   是否正確 需要
      或是 只要
      set  Ar = Array(TextBox3, TextBox4, TextBox5....)
         或是 只要
      Ar = Array(TextBox3, TextBox4, TextBox5....)
作者: GBKEE    時間: 2010-10-7 10:45

本帖最後由 GBKEE 於 2010-10-7 11:17 編輯

回復 3# yangjie
Dim Ar(3 To 80) As MSForms.Control, i%
For i = 3 To 80
  Set Ar(i) = Controls("TextBox" & i)
Next
For i = 2 To lastrow1
        If Cells(i, 4) = TextName.Text Then
            For ii = 3 To UBound(AR)
                AR(ii).Value = Sheets("學生資料").Cells(i, 6 + ii - 3)
            Next
        End If
Next
補上另一解法
For i = 2 To lastrow1
    If Cells(i, 4) = TextName.Text Then
        For ii = 3 To 80
            Controls("TextBox" & ii) = Sheets("學生資料").Cells(i, 6 + ii - 3)
        Next
    End If
Next
作者: et5323    時間: 2010-10-7 11:08

再简化点:
Dim  i%,ii%
For i = 2 To lastrow1
        If Cells(i, 4) = TextName.Text Then
            For ii = 3 To 80
                Controls("TextBox" & ii).object.Value = Sheets("學生資料").Cells(i, 6 + ii - 3)
            Next
        End If
Next
作者: yangjie    時間: 2010-10-7 17:29

太棒了 ,完全解決。
   其他Controls應是可如法泡製才對
   GBKEE,et5323 謝謝你門
作者: hugh0620    時間: 2012-3-5 11:13

回復 4# GBKEE


    Dear G大大 & 各位大大

     小弟對控制項(如:listbox,textbox.label)的應用~ 想請您指導一下~
     若是我的data是N筆 (每次一更新數量不一)
     我要如何在UserForm中產生相對應的Label
     
      ex.
      sheet1   A1:A10  儲存格的值為A~J
      SHEET1 中有預設一個CommandButton1 點選後會跳出一個UserForm1
      並自行產生10個Label
      Label1.Caption=A
      Label2.Caption=B
      .
      .
      Label1.Caption=J
      
      在VBA中是否可以做到這樣的功能~ 有點動態的顯示~
作者: oobird    時間: 2012-3-5 12:43

本帖最後由 oobird 於 2012-3-5 12:45 編輯
  1. Private Sub UserForm_Initialize()
  2.     rng = Range([a1], [A65536].End(3))
  3.     For i = 1 To UBound(rng)
  4.         Set b = Me.Controls.Add("Forms.Label.1")
  5.         With b
  6.             .Height = 10
  7.             .Width = 10
  8.             .Top = 15 * i
  9.             .Left = 20
  10.             .Caption = rng(i, 1)
  11.         End With
  12.     Next
  13. End Sub
複製代碼

作者: hugh0620    時間: 2012-3-5 15:01

回復 8# oobird

     謝謝o大大的教導~
     我亦將其修改成
     若userform1中的label 每一排15列 來排列
     sheet1的資料=>用來判斷label共需要排幾列
     第一階段已經可以依sheet1的data =userform1中的label.caption
     亦同時新增textbox
     
    再繼續延伸一個問題( 如何再將userform1中的label & textbox存到sheet2)
     若在userform1 預設一個commandbutton1 將userform1中label & textbox的資料
    抓取到sheet2
    sheet2.A欄 存放userform1.label
    sheet2.B欄 存放userform1.textbox




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)