當儲存格a1輸入數字如下
a1=5
當按下輸入鍵時
儲存格a1會變成字串
a1=我愛你
不知道這要用什麼方法來做
可列印頁面
當儲存格a1輸入數字如下
a1=5
當按下輸入鍵時
儲存格a1會變成字串
a1=我愛你
不知道這要用什麼方法來做
按一下 Alt+F11
將底下程式碼貼於游標所在處
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Target = 5 Then Target = "我愛妳"
End Sub
這是一個儲存格的話,如果我有四百個儲存格的話
文字字串有七十個我又因該如何做?
案例如下
a1=5
a1=我愛你
a3=7
a3=愛你呦
數字是1--70 對印到文字字串
1=中國
2=情愛
3=再次
4=心情
5=我愛你
.
.
.
.
.
.
68=人性
69=通知
70=是敵是友
不會要一個一個慢慢來吧:confused:
這麼嚴格喔~~~
可不可以這樣做
例如在A1輸入5
然後在B1出現"我愛你"
在A1輸入7
在B1出現"愛你呦"
如果可以這樣的話~~~那就非常簡單了...
可以的話再跟我說
我再把檔案上傳
以免浪費網路資源...:)
在同一儲存格中數字為1--70的隨機變數(就是等待使用者輸入)
但是數字對印文字字串不能改變
如果這是單一儲存格可以這樣做嗎?
PS:Oyazi這就是如此嚴格(不要問我為什麼)
OYAZI兄想用VLOOKUP這函數嗎?
不過我想你的要求, 最快的方法都是用沙拉油兄之方法了
沙拉油大大的方法我用不出來
:(
sheet1 ---> 右click ---> 檢視程式碼 ---> 將一般改成worksheet ---> 貼上以下
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Target = 1 Then Target = "我愛妳"
If Target.Address = "$A$1" And Target = 2 Then Target = "我唔愛妳"
If Target.Address = "$A$1" And Target = 3 Then Target = "我永遠愛妳"
If Target.Address = "$A$1" And Target = 4 Then Target = "我永遠唔愛妳"
If Target.Address = "$A$1" And Target = 5 Then Target = "我永遠永遠愛妳"
If Target.Address = "$A$1" And Target = 6 Then Target = "我永遠永遠唔愛妳"
....
..
.
(如此類推)
End Sub
為什麼還要回去按一下才會變成字串
不能自動變換嗎?
不能自動變化,因為是使用 Selection_Change 事件,因此要有移動才行。
在a1輸入
在b1顯示
在其他地方, 如c欄輸入事先的文字
a1 = 1 (輸入的數字)
b1 = index($c:$c)
c1 = 我愛你
c2 = 我不愛你
c3 = 我非常愛你
當a1 = 1, b1 = 我愛你
當a1 = 2, b1 = 我不愛你
當a1 = 3, b1 = 我非常愛你
供你參考 ^.^
既然這麼嚴格的話...
那就用巨集嚕...
excel裡的函數好像沒有輸入後還可以改變被輸入儲存格的功能
如果只能用巨集的話
或許用沙兄拉油的方法會複製很多次...
如果用迴圈的方式就簡單多了...
你在sheet2裡把要對應的數字及字串全部打好(a欄打數字b欄打字串)
然後在sheet1裡寫巨集
當a1有值輸入並按下enter時,就call迴圈去比對sheet2的a欄
若找到就把b欄對應的值寫回sheet1的a1儲存格就好啦...
回覆kankan兄:
是的,我就是要用vlookup函數
這個函數非常好用,不是嗎~~~呵呵~~~:)
[QUOTE][i]最初由 陶陶 發表[/i]
[B]在同一儲存格中數字為1--70的隨機變數(就是等待使用者輸入)
但是數字對印文字字串不能改變
如果這是單一儲存格可以這樣做嗎?
PS:Oyazi這就是如此嚴格(不要問我為什麼) [/B][/QUOTE]
請問Oyazi兄:
那巨集又要如何寫程式碼?
用Worksheet_Change事件做了一個效率不是很高,但是可以已經判斷的檔案提供給你參考
也希望各位高手給予指導指教!
因為考慮到多個儲存格的複製、貼上、刪除的問題一時之間弄不好,所以退而求其次。
點底下的圖示可以下載檔案
[url=http://home.pchome.com.tw/family/wenhe/MyQA/數字換字串.zip][img]http://home.pchome.com.tw/art/feiterng/gifs/oillogo2.gif[/img][/url]
這樣好了...
你把你那個有70個字串的檔案給我...
我寫好了就回覆給你讓你看...
[QUOTE][i]最初由 陶陶 發表[/i]
[B]請問Oyazi兄:
那巨集又要如何寫程式碼? [/B][/QUOTE]
沙兄, 巨集不用太複雜吧?
如沙兄範例, 先在 Sheet2 的 A 欄依列號
輸入對照的中文字. Sheet1 的巨集如下--
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsNumeric(Target) Then Exit Sub
a = Sheets(2).Cells(Target, 1)
If a = "" Then Exit Sub Else Target.Value = a
End Sub
這個巨集裡, 當輸入的數字在 Sheet2 找不到對應的
內容時, 就維持原數字不變. 可視需要修改.
使用 Worksheet_Change 事件確實可以做到即時改變的.
Leon 大大.... ^^
沒有你指導的一天我的VBA日子就漸進黑暗....@@"
因為問問題的人說他要限制在A1∼A70才要判斷
所以我才設定一個可以自行設定判斷的區域
然後有一點我一直弄不好,那就是如果我用貼上的方式
又要讓貼上的區域如果有貼入判斷區與非判斷區,其屬於判斷區內儲存格依舊能全部判斷
所以腦筋就就變的很混亂...
已經很久沒有您的教誨了,小弟會加緊努力追趕您的~~
好膽麥走~~
開玩笑的 ^^
就算要限制在A1∼A70, 判斷欄號和列即可.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Or Target.Row > 70 Then Exit Sub
On Error GoTo 1
a = Sheets(2).Cells(Target, 1)
If a = "" Then Exit Sub Else Target.Value = a
1
End Sub
這個巨集改用 On Error 的方式, 可避免輸入
非數字或 0 時導致錯誤. 另外, 此巨集只適用
輸入單一格時 -- 若一次貼上多格將不起作用.
其實這題在實際應用上通常也是如此.
首先要感謝各位對於這個問題的回答
小弟因工作所以有一、二天未能來此
對於各位所回答的方式試用問題如下
1.沙拉油兄的第一種方法:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" And Target = 5 Then Target = "我愛妳"
End Sub
用到十分之一(也就是第七個儲存格)電腦就顯示記憶體不足(公司電腦沒辦法)
所以無法成功
2.Oyazi兄、cchunghk 兄的方法a1=5 b1=文字字串
我的疑問是一個儲存格數字(a1)為隨機輸入(1-70)對印文字字串(b1)為固定
這是單指一個儲存格而言,現今我有五百個儲存格每個都要像單一儲存格如此
這樣也可以嗎?
至於Oyazi兄所要的70個文字字串的檔案
就要請Oyazi兄自己打一下嘍(因為這是業務上的事情不方便啦對不起嘍)
每一個文字字串一個字就好了 不敢太麻煩你
3.Leon Chou兄、沙拉油兄 所提的巨集還要請兩位大大費心一下
因為我對excel是一竅不通所以謝謝兩位大大
對於我的問題我要再次感謝各位的回答
P.S不管任何方法、能完成就是好方法。
[color=red]一、[/color]先在 Sheet2 的 A 欄依列號輸入對照的中文字,例:
│[color=dimgray]A[/color] │
─┼──┼
[color=dimgray]1[/color]│中國│
[color=dimgray]2[/color]│情愛│
[color=dimgray]3[/color]│心情│
[color=dimgray]:[/color]│: │
[color=red]二、[/color]選取 Sheet1,在工作表名稱標籤按右鍵 >> [檢視程式碼]
貼上這個巨集:
[color=darkblue]Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Or Target.Row > 70 Then Exit Sub
On Error GoTo 1
a = Sheets(2).Cells(Target, 1)
If a = "" Then Exit Sub Else Target.Value = a
1
End Sub [/color]
[color=red]三、[/color]按 Alt + Q 回到 Sheet1 工作表,試試看。
在 Sheet1 的 A 欄 (A1~A70) 輸入數字,那一格
的內容就會變成 Sheet2 對應的中文字。
Leon Chou兄
你的方法我試過了可以使用但是小弟還是幾個問題要請教
1.工作表名稱不是Sheet1 程式碼是否要改變
2.啟始欄位不是A1 而是L5的話程式碼又要如何改變
以上問題要麻煩大大解答
[list=1][*]Sheets(1)、Sheets(2) 這種表示法不受工作表名稱的影響。
但是和工作表的順序有關, Sheets(1)表示第一張工作表, 以此類推。[*]你是指輸入數字的地方改到 L5 開始嗎? L欄就是第12欄,
若要限制於 L5 以下, 第 1 行改為:
If Target.Column <> 12 Or Target.Row < 5 Then Exit Sub [/list]
2.Oyazi兄、cchunghk 兄的方法a1=5 b1=文字字串
我的疑問是一個儲存格數字(a1)為隨機輸入(1-70)對印文字字串(b1)為固定
這是單指一個儲存格而言,現今我有五百個儲存格每個都要像單一儲存格如此
這樣也可以嗎?
至於Oyazi兄所要的70個文字字串的檔案
就要請Oyazi兄自己打一下嘍(因為這是業務上的事情不方便啦對不起嘍)
每一個文字字串一個字就好了 不敢太麻煩你
今天才回答你的問題也許有一點晚
因為我看到下方的回應
似乎已經將問題解決的差不多了
關於你的疑問
答案是可以的
只要複製儲存格裡的函數就可以做到的
當然在複製的同時
要注意的是,查詢的70個欄位要用"$"鎖住
否則就會對應不出來了
我了解業務機密的重要性
你客氣了...
感謝各位的回答小弟的問題業以解決
希望有一天能協助各位
再次感謝各位的協助