Board logo

標題: Excel VBA 用textbox新增表單資料問題 [打印本頁]

作者: Sofie    時間: 2016-5-19 15:03     標題: Excel VBA 用textbox新增表單資料問題

大家好~

最近才開始學習VBA,想要設計textbox來新增表單資料,目前寫的程序可以執行,但是都會蓋掉第一列的標題欄,想請問該如何修改才能讓資料直接從第二列開始依序往下新增,謝謝!


[attach]24315[/attach]
作者: luhpro    時間: 2016-5-19 22:31

回復 1# Sofie

壓縮檔大小只有 22 個Bytes -----> Excel檔沒加進來, 請重壓後再重傳上來.
作者: Sofie    時間: 2016-5-20 09:04

重新上傳附件了,感謝提醒!

執行前的表格↓
[attach]24325[/attach]

執行後的表格↓(標題就被覆蓋了,想修改成從第二列開始新增資料,邏輯不太好想不出來
[attach]24326[/attach]
  1. Option Explicit
  2. Public n As Integer
  3. Private Sub CommandButton1_Click()
  4. n = n + 1
  5.    
  6.     If Range("b" & n) <> "" Then

  7.    
  8.     Sheets("Sheet1").Range("b" & n).Value = TextBox1.Value
  9.    
  10.     End If
  11.      If Range("c" & n) <> "" Then

  12.    
  13.     Sheets("Sheet1").Range("c" & n).Value = TextBox2.Value
  14.    
  15.     End If
  16. End Sub
複製代碼
[attach]24324[/attach]
作者: starry1314    時間: 2016-5-20 10:42

回復 3# Sofie


    Private Sub CommandButton1_Click()
n = Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row + 1 '往最後有資料列+1貼上

   
    If Range("b" & n) = "" Then

   
    Sheets("Sheet1").Range("b" & n).Value = TextBox1.Value
   
    End If
     If Range("c" & n) = "" Then

   
    Sheets("Sheet1").Range("c" & n).Value = TextBox2.Value
   
    End If
End Sub
作者: Sofie    時間: 2016-5-23 11:37

回復 4# starry1314

感謝回覆!

後來我繼續延伸問題,想按年齡級距於不同起始列新增資料,比如說年齡大於60歲的從第20列開始新增,
步驟1. key 張XX  12
步驟2. key 林OO 65
步驟3. key林OO 24
但是當年齡大於60的資料進來之後,第三筆小於60歲的資料就會跟著步驟3的結果往下新增,而不是從步驟1的結果往下,

想請問我少判斷了什麼地方,謝謝~
[attach]24341[/attach]
  1. Private Sub CommandButton1_Click()
  2.     n = Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row + 1 '往最後有資料列+1貼上

  3.    
  4.     If Range("b" & n) = "" And TextBox2.Value > 60 Then
  5.    
  6.             
  7.          Sheets("Sheet1").Range("b" & 20 + n).Value = TextBox1.Value
  8.    
  9.    
  10.          Sheets("Sheet1").Range("c" & 20 + n).Value = TextBox2.Value
  11.          
  12.       Else
  13.          
  14.          Sheets("Sheet1").Range("b" & n).Value = TextBox1.Value
  15.    
  16.    
  17.          Sheets("Sheet1").Range("c" & n).Value = TextBox2.Value


  18.    
  19.     End If
  20.    
  21. End Sub
複製代碼

作者: starry1314    時間: 2016-5-23 13:42

回復 5# Sofie
    If Range("B" & n) = "" And TextBox2.Value > 60 Then
    If Range("C" & n) = "" And TextBox2.Value > 60 Then

判斷年齡的地方錯了....
從20列開始新增..沒想到怎麼做
因為目前是以第20列+最後一列的總列數 所以中間會一直空很大格
作者: koo    時間: 2016-5-23 16:51

x = TextBox2.Value
    If x < 60 Then
        y = [B20].End(xlUp).Row + 1
    Else
        y = [B65536].End(xlUp).Row + 1
        If y < 20 Then y = 20
    End If
    Cells(y, 2) = x
作者: ML089    時間: 2016-5-23 17:39

  1. Option Explicit
  2. Public n As Integer
  3. Private Sub CommandButton1_Click()
  4.     If TextBox2.Value > 60 Then n = 20 Else n = 2
  5.     Do
  6.             If Cells(n, "B") = "" Then Exit Do
  7.             n = n + 1
  8.     Loop
  9.     Sheets("Sheet1").Cells(n, "B").Value = TextBox1.Value
  10.     Sheets("Sheet1").Cells(n, "C").Value = TextBox2.Value
  11. End Sub
複製代碼

作者: Sofie    時間: 2016-6-4 10:08

回復 6# starry1314

回復 7# koo

回復 8# ML089

感謝各位前輩的分享,目前使用koo大的方法可行!




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