Board logo

標題: ComboBox選好文字後,欄位沒東西 [打印本頁]

作者: Jared    時間: 2013-2-25 16:25     標題: ComboBox選好文字後,欄位沒東西

本帖最後由 Jared 於 2013-2-25 16:26 編輯

各位大大好
小弟我日前研究VBA用法
但程式寫法還是有些不明白

目前遇到的問題是
用意是要表單用下拉式選單選擇完年月日後
傳回Sheet的某個欄位
但是我的程式變成初始值顯示是空白,還可以填寫(正常是有預設值,並且無法做修改的動作)
雖然下拉式選單已經選好文字
可是傳回Sheet後是空白沒東西
以下是我目前寫的
麻煩各位大大能幫我解惑
感激不盡!!!:dizzy:
[attach]14246[/attach]
-------------------------------
Private Sub CommandButton1_Click()
Call test2
End Sub
-------------------------------
Sub test2()
Dim X

a1 = test.Box1.Value '年
a2 = test.Box2.Value '月
a3 = test.Box3.Value '日

X = ("a1") & (".") & "a2" & (".") & "a3"


If Application.CountBlank([C5:C99]) = 0 Then Range("C100") = X: Exit Sub
For Each a In [C5:C99]
    If a = "" Then
        a.Value = X
        Exit For
    End If
Next

End Sub
作者: kimbal    時間: 2013-2-26 14:00

各位大大好
小弟我日前研究VBA用法
但程式寫法還是有些不明白

目前遇到的問題是
用意是要表單用下 ...
Jared 發表於 2013-2-25 16:25


不太清楚頁面上的情況,
但是這句是有問題的
X = ("a1") & (".") & "a2" & (".") & "a3"
應該是這樣
X = a1&"." & a2 & "." & a3
不然頁面上只會加上寫死了的 "a1.a2.a3"
作者: Jared    時間: 2013-2-26 14:54

感謝大大幫忙
但是這樣的寫法
X = a1&"." & a2 & "." & a3
""一定要加上()
不然會判斷這是非陳述式出現錯誤

我主要的問題是
要怎麼設定
才能將下拉式選單的東西在點選Bottom後
將資料傳到指定欄位上

感激不盡>"<
作者: Hsieh    時間: 2013-2-26 16:18

回復 3# Jared
  1. Private Sub CommandButton1_Click()
  2. Dim A As Range
  3. If Application.CountBlank(Sheet1.Range("A5:A99")) = 0 Then
  4. Sheet1.[A100] = DateSerial(ComboBox1, ComboBox2, ComboBox3)
  5. Else
  6. Set A = [A5]
  7. Do Until A = ""
  8.   Set A = A.Offset(1, 0)
  9. Loop
  10. A.Value = DateSerial(ComboBox1, ComboBox2, ComboBox3)
  11. End If
  12. End Sub
複製代碼

作者: Jared    時間: 2013-2-27 10:13

謝謝大大的協助
終於可以回傳下拉式選單的訊息
但是不曉得為什麼
原本命名的下拉式選單為『Box1』
Sheet1.[A100] = DateSerial(Box1, Box2, Box3)
會出現找不到成員的警告視窗
要改為ComboBox3 的名稱才沒有出錯
但是我原本設定要將這三個欄位的數值
分別為年月日
都傳到欄位時變成完整日期[例如:2013/02/28]
但傳到A1時,一律顯示1999/11/30(如圖)
不曉得為什麼
希望能解答我的疑惑
感激不盡!!
作者: Hsieh    時間: 2013-2-27 10:21

回復 5# Jared


    這樣的問題,沒有檔案是得不到答案的
作者: mark15jill    時間: 2013-2-27 10:40

謝謝大大的協助
終於可以回傳下拉式選單的訊息
但是不曉得為什麼
原本命名的下拉式選單為『Box1』
Shee ...
Jared 發表於 2013-2-27 10:13



   
終於可以回傳下拉式選單的訊息
但是不曉得為什麼
原本命名的下拉式選單為『Box1』
Sheet1.[A100] = DateSerial(Box1, Box2, Box3)
會出現找不到成員的警告視窗

這點,你在宣告時,有無將 Box1宣告成  ComboBox1
如果沒有,當然找不到..


要改為ComboBox3 的名稱才沒有出錯
但是我原本設定要將這三個欄位的數值
分別為年月日
都傳到欄位時變成完整日期[例如:2013/02/28]
但傳到A1時,一律顯示1999/11/30(如圖)
不曉得為什麼

這點,MS Office 的時間預設值原本就不是照正常的時間預設
除非另外設定,網路上有方法

作者: mark15jill    時間: 2013-2-27 10:45

另外,這問題應該是屬於程式區塊吧... 怎跑到一般區 ==
作者: Jared    時間: 2013-2-27 10:56

回復 6# Hsieh
[attach]14262[/attach]

抱歉! 夾帶檔案如附件
DateSerial 的語法是將選單的數字判斷為日期
但是選單選擇的數值卻無法抓到

每按一次Button將資料送出
數值就在選單裡頭複製一次
不曉得原因為何

還請大大解惑
感激不盡!! >"<
作者: Jared    時間: 2013-2-27 11:14

回復 8# mark15jill
抱歉>"<
希望沒有造成任何人的困擾
作者: Hsieh    時間: 2013-2-27 15:01

回復 9# Jared
要了解事件程序的觸發時機
你的流程是在開啟表單時就讓ComboBox載入清單
選擇年、月後ComboBox3可判斷最後日期而載入清單
而TextBox1直接顯示當天日期
  1. Private Sub ComboBox2_Change()
  2. chang_day
  3. End Sub

  4. Private Sub ComboBox3_Change()
  5. chang_day
  6. End Sub

  7. Private Sub CommandButton1_Click()
  8. Dim A As Range
  9. If Application.CountBlank(Sheet10.Range("A5:A99")) = 0 Then
  10. Sheet10.[A100] = DateSerial(ComboBox1.Value, ComboBox2.Value, ComboBox3.Value) 'DateSerial為日期屬性
  11. Else
  12. Set A = [A5]
  13. Do Until A = ""
  14.     Set A = A.Offset(1, 0)
  15. Loop
  16. A.Value = DateSerial(ComboBox1.Value, ComboBox2.Value, ComboBox3.Value) 'DateSerial為日期屬性
  17. End If
  18. End Sub


  19. Private Sub UserForm_Initialize()
  20. For i = 2013 To 2020
  21.     ComboBox1.AddItem i
  22. Next
  23. For i = 1 To 12
  24.     ComboBox2.AddItem i
  25. Next
  26. For i = 1 To 31
  27.     ComboBox3.AddItem i
  28. Next
  29. b21 = Date

  30. End Sub
  31. Sub chang_day()
  32. If Val(ComboBox1) > 0 And Val(ComboBox2) > 0 Then
  33. ComboBox3.Clear
  34. For i = 1 To Day(DateSerial(ComboBox1.Value, ComboBox2.Value + 1, 0))
  35.    ComboBox3.AddItem i
  36. Next
  37. End If
  38. End Sub
複製代碼

作者: mark15jill    時間: 2013-3-1 09:26

回復 10# Jared


    不會啦ˇˇ
只是我比較雞婆而已..
話說 您的問題有解決了嗎?
作者: Jared    時間: 2013-3-1 10:31

回復 12# mark15jill

還沒有...>"<
還在找尋其他辦法
作者: Jared    時間: 2013-3-1 11:03

回復 11# Hsieh


感謝大大的協助
但是我不明白的是
執行這行程式
If Val(ComboBox1) > 0 And Val(ComboBox2) > 0 Then
就出現
[attach]14279[/attach]
不知道是什麼問題>"<
作者: Hsieh    時間: 2013-3-1 11:09

本帖最後由 Hsieh 於 2013-3-1 11:10 編輯

回復 14# Jared
刪除這兩個控制項ComboBox1、ComboBox2
重新設置,這可能你在重新命名後曾經有新增ComboBox控制項然後刪除
導致記憶中的殘留物件,當然這只是猜測,若有知道確實原因者,請不吝指正




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