標題:
[發問]
輸入編號跑出資料
[打印本頁]
作者:
gn00487767
時間:
2014-2-12 16:06
標題:
輸入編號跑出資料
本帖最後由 gn00487767 於 2014-2-12 16:12 編輯
煩請大大教學
[attach]17480[/attach]
[attach]17481[/attach]
該如何添加指令
作者:
GBKEE
時間:
2014-2-12 17:04
回復
1#
gn00487767
試試看
Option Explicit
Option Base 1
Private Sub CommandButton1_Click()
Ex
End Sub
Private Sub TextBox1_Change()
Ex
End Sub
Private Sub Ex()
Dim Rng As Range, Ar, i As Integer
Ar = Array([C3], [G3], [C5], [G5], [C7], [C9])
Set Rng = Sheets("資料表").Range("A:A").Find(WHAT:=TextBox1, LOOKAT:=xlWhole)
For i = 1 To UBound(Ar)
If Not Rng Is Nothing Then
Ar(i).Value = Rng.Offset(, i)
Else
Ar(i).Value = ""
End If
Next
End Sub
複製代碼
作者:
stillfish00
時間:
2014-2-12 17:19
回復
1#
gn00487767
TextBox1有使用需求嗎? 拿掉會清爽一點。
資料龐大可以參考下面,只用match找一次。
Private Sub CommandButton1_Click()
Dim lRow As Long, sID As String
sID = Sheets("表格").[E1].Value
If sID <> "" Then
With Sheets("資料表")
On Error Resume Next '忽略找不到時的 Error
lRow = Application.Match(sID, .Range(.[A1], .[A1].End(xlDown)), 0)
On Error GoTo 0 '還原
End With
If lRow > 0 Then
ar = Application.Transpose(Application.Transpose(Sheets("資料表").Cells(lRow, "B").Resize(, 6).Value))
With Sheets("表格")
.[C3].Value = ar(1)
.[G3].Value = ar(2)
.[C5].Value = ar(3)
.[G5].Value = ar(4)
.[C7].Value = ar(5)
.[C9].Value = ar(6)
End With
End If
End If
End Sub
複製代碼
作者:
gn00487767
時間:
2014-2-13 10:37
回復
2#
GBKEE
感謝超級版主的教學
你的方法符合小弟的需求
只是小弟不太能理解,因為分的好散
多出那些EX是什麼意思
因為小弟是完全不懂慢慢研究的
作者:
GBKEE
時間:
2014-2-13 10:48
回復
4#
gn00487767
Private Sub CommandButton1_Click()
Ex '執行這程式 = Call Ex
End Sub
複製代碼
作者:
gn00487767
時間:
2014-2-13 10:50
回復
3#
stillfish00
感謝stillfish00大大的指導
TextBox1是可以拿掉,
因為小弟之前剛學習時,很多連結都弄在TextBox1,所以才加上去的
再請問
ar = Application.Transpose(Application.Transpose(Sheets("資料表").Cells(lRow, "B").Resize(, 6).Value))
裡面的"B"是代表B欄嗎
裡面的 6 是代表 B欄之後的6欄嗎?
因為小弟真的是由完全不懂自行亂湊出來的
作者:
gn00487767
時間:
2014-2-13 11:03
回復
5#
GBKEE
再請問大大,那這2個呢
01.Option Explicit
02.Option Base 1
小弟試過拿掉他們
但執行後位置都亂了
作者:
GBKEE
時間:
2014-2-13 11:33
回復
7#
gn00487767
vba視窗,有一說明指令,輸入 Option Explicit 有說明
作者:
stillfish00
時間:
2014-2-14 12:50
回復
6#
gn00487767
裡面的"B"是代表B欄嗎
裡面的 6 是代表 B欄之後的6欄嗎?
是的
作者:
gn00487767
時間:
2014-2-16 02:34
回復
3#
stillfish00
再次請教 stillfish00 大大
若整欄資料的話小弟又該怎麼做呢?
如附件
作者:
sunnyso
時間:
2014-2-16 11:53
回復
1#
gn00487767
一定要用vba嗎?單看圖, 用函數應該也可
作者:
gn00487767
時間:
2014-2-16 22:15
回復
11#
sunnyso
是的 sunnyso 大大
因為小弟就是都用函數 導致 檔案變的超大
所以才想說 能夠改成VBA的地方盡量改
不然開啟檔案很難開啟
作者:
GBKEE
時間:
2014-2-17 06:46
回復
12#
gn00487767
試試看
Option Explicit
Sub Ex()
Dim i As Integer, Ar(), m As Variant
With Sheets("自動顯示")
ReDim Ar(2 To .Range("A1").End(xlDown).Row, 1 To 3) '指定二維陣列元素的下限索引值,上限索引值
For i = 2 To .Range("A1").End(xlDown).Row
m = Application.Match(.Range("A" & i), Sheets("資料表").Range("A:A"), 0)
'應用工作表函數搜尋編號
If IsNumeric(m) Then
With Sheets("資料表").Range("A" & m)
Ar(i, 1) = .Range("B1") '名稱欄
Ar(i, 2) = .Range("C1") '日期欄
Ar(i, 3) = .Range("D1") '姓名欄
End With
End If
Next
.[B2].Resize(UBound(Ar) - 1, UBound(Ar, 2)) = Ar
End With
End Sub
複製代碼
作者:
gn00487767
時間:
2014-2-17 15:24
回復
13#
GBKEE
感謝大大不厭其煩的位小弟解答
但此代碼 日期的地方顯示一樣是顛倒的@@
小弟發現了另一個方式了
就是把我原有的函數全部套用 您再另一個主題給小弟的代碼
With Sheets("XX").[X?:X?]
.Cells = " 原有函數(只是原有的"X"要變成" "X" ") "
.Cells = .Value '公式轉成值
End With
這樣的方式就不用變動原本的函數而達到小弟的需求了^^
在此致上萬分的謝意^^
作者:
GBKEE
時間:
2014-2-17 16:24
回復
14#
gn00487767
日期的地方顯示一樣是顛倒的@@
請在工作表上手動改回原是其格式,再執行程式看看
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)