Board logo

標題: 組合方塊寫入VBA問題 [打印本頁]

作者: gca78000    時間: 2014-11-4 12:56     標題: 組合方塊寫入VBA問題

如副件所指VBA可行嗎請指導謝謝
作者: luhpro    時間: 2014-11-4 23:57

如副件所指VBA可行嗎請指導謝謝
gca78000 發表於 2014-11-4 12:56


Sheets("Sheet1").ComboBox1.LinkedCell = "$A$2"
作者: gca78000    時間: 2014-11-5 12:17

感謝luhpro 大大指導但小弟測試好像步行耶請在指導謝謝
作者: luhpro    時間: 2014-11-7 03:00

本帖最後由 luhpro 於 2014-11-7 03:03 編輯
感謝luhpro 大大指導但小弟測試好像步行耶請在指導謝謝
gca78000 發表於 2014-11-5 12:17

Sheets("Sheet1").ComboBox1.LinkedCell = "清單!$A$2"

話說你的範例檔沒有 Sheets("清單"),
我以為你是要 Link 到 同一個Sheet(Sheets("Sheet1")) 的 [A2] 資料.

另外你的 Combobox只要一個值(清單!$A$2)嗎?
還是幾個資料驗證的清單?
若是:
假設 Sheets("清單 ") 的 B2 ~ B4 = 張三,李四,王五
Private Sub Workbook_Open()
  With Sheets("清單")
    Sheets("Sheet1").ComboBox1.ListFillRange = "清單!" & Range( .[B2],  .[B2].End(xlDown)).Address
  End With
End Sub
則清單內容會有 張三,李四,王五 等3個選項.
作者: gca78000    時間: 2014-11-7 19:27

luhpro大大真是高招小弟甘拜下風謝謝耐心指導小弟可否再問一題如下列
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$3" Then UserForm1.Show
End Sub
我要讓a3-a7+e3e7+g3-g7+i3-i7+k3-k7+m3-m7一樣會秀出UserForm1.Show請問VBA要如何改
作者: luhpro    時間: 2014-11-7 23:50

luhpro大大真是高招小弟甘拜下風謝謝耐心指導小弟可否再問一題如下列
Private Sub Worksheet_SelectionCha ...
gca78000 發表於 2014-11-7 19:27


???
看你用 Target.Address 我猜是要對某些儲存格做處理,
但你寫的 : a3-a7+e3e7+g3-g7+i3-i7+k3-k7+m3-m7 怪怪的.

e3e7 是哪個(或哪些) 儲存格位址的表示方式?
或是要用 e3:e7 (範圍儲存格)嗎?
另 a3-a7... 又加又減的,
是要對儲存格內容做計算,
還是要對儲存格位址作增減?

我猜測你可能是要當點擊了 :
a3,a7,e3,e7,g3,g7,i3,i7,k3,k7,m3,m7
等儲存格就要顯示UserForm1.

若是這樣我們可以先歸納這些儲存格位址的規律:

1. 都落在第 3 列與第 7 列 -> 列的表示方式為 Range.Row.
這樣只要一行 :
  If Target.Row=3 Or Target.Row=7 Then
就能實現.

2. 欄序分別為 a,e,g,i,k,m 這 6 欄,則用 :
If Target.Column=1 Or Target.Column=5 Or Target.Column=7 Or Target.Column=9 Or Target.Column=11Or Target.Column=13 Then
來實現.

但這樣寫程式碼太長了,
對於非連續或不具規律性多組數字的判斷可以用
Select Case Target.Column
  Case 1,5,7,9,11,13
    ...
end select
來實現,
好處是美觀, 具結構性易除錯及維護.

綜上所述程式可以修改如下:
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.   Dim bShow As Boolean
  3.   
  4.   bShow = False
  5.   With Target
  6.     If .Row = 3 Or .Row = 7 Then
  7.       Select Case .Column
  8.         Case 1, 5, 7, 9, 11, 13
  9.           bShow = True
  10.       End Select
  11.     End If
  12.   End With
  13.   If bShow Then UserForm1.Show
  14. End Sub
複製代碼

作者: gca78000    時間: 2014-11-8 12:02

感谢luhpro大大耐心指導小弟受益良多測試已可以謝謝教導感恩你
作者: gca78000    時間: 2014-11-17 15:32

回復 4# luhpro
小弟受教了以經解決可以了感恩教導




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