返回列表 上一主題 發帖

[發問] 如何利用VBA回傳文字?

[發問] 如何利用VBA回傳文字?

假如A1,B1

如何在B1輸入任何文字後,A1會出現特定安排的文字,但A1不想輸入任何函數,要保持空白。
例如: B1如輸入ABC,A1會自動添加預設的文字如”DEF”,但A1本身是空格的,那應該要怎麼做呢?求高手指教!

回復 1# leehom


    不知道你所謂的特定文字是什麼?
不過你可以利用工作表事件來製作
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = "$B$1" Then
  3.     If Target = "" Then
  4.         Target.Offset(, -1) = ""
  5.     Else
  6.         Target.Offset(, -1) = Target & " DEF"
  7.     End If
  8. End If
  9. End Sub
複製代碼

TOP

本帖最後由 leehom 於 2015-9-15 21:48 編輯

回復 2# lpk187


果然有用啊,謝謝啊!!還想再請教一下,如果想回傳的是數字,如何設定遞增?
例如B1輸入文字,A1回傳是"1",B2輸入文字,A2回傳是"2",B3輸入文字,A3回傳是"3",
如此類推,要如何編寫呢?謝謝師兄指教!!!:D

TOP

本帖最後由 lpk187 於 2015-9-15 22:34 編輯

回復 3# leehom


    依照你傳回數字,可以利用Target的列號(Row)回傳
觸發則改為第二欄Column = 2 ,也就是B欄
  1. Private Sub Worksheet_Change(ByVal Target As Range)

  2. If Target.Column = 2 Then
  3.     If Target = "" Then
  4.         Target.Offset(, -1) = ""
  5.     Else
  6.         Target.Offset(, -1) = Target & " " & Target.Row
  7.     End If
  8. End If
  9. End Sub
複製代碼

TOP

回復 4# lpk187

的確很神奇,我發現輸入文字是成功的,但下拉遞增就不行了,為甚麼會這樣呢師兄?

TOP

但下拉遞增就不行了,為甚麼會這樣呢師兄?
leehom 發表於 2015/9/15 23:39

這樣就可以.
  1. Option Explicit
  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     Dim E As Range
  4.     If Target.Column = 2 Then
  5.         For Each E In Target
  6.             If E = "" Then
  7.                 E.Offset(, -1) = ""
  8.             Else
  9.                 E.Offset(, -1) = E & " " & E.Row
  10.             End If
  11.         Next
  12.     End If
  13. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 leehom 於 2015-9-16 13:11 編輯

Workbook.zip (27.66 KB)


回復 6# GBKEE




感謝超級版主的回覆啊,我試過是有效的,但我想將代碼引入這個工作表卻無法成功,
我之前請教了其他高人,寫了一些VBA代碼,一開啟的話會彈出視窗要求輸入號碼,
文字模式是ABCD0123456,然後輸入增加多少個,它會自動遞增,像圖上那樣,
我的原意是希望是A欄"QTY"會自動添加號碼然後順應遞增,但卻無法成功,
只好再請求各位高手了,謝謝啊!!

TOP

回復 7# leehom


    整個走向錯誤了,不應該這樣去寫
一個問題是要考慮後來使用者該如何輸入,你第一個問題到後面這一個問題,恩考的方向完全不同了。
  1. Sub worksheet_change(ByVal Target As Range)
  2.      If Target.Address = "$B$2" Then
  3.      Application.EnableEvents = False
  4.      i = Application.InputBox("How many numbers you want to add?", "Prompt", , , , , , 1) - 1
  5.      For j = Target.Row + 1 To Target.Row + i
  6.          Cells(j, Target.Column) = Left(Cells(j - 1, Target.Column), 5) & Right(Cells(j - 1, Target.Column), 7) + 1
  7.          Cells(j, Target.Column - 1) = Cells(j, Target.Column - 1).Row
  8.      Next
  9.      Application.EnableEvents = True
  10.      End If
  11. End Sub
複製代碼

TOP

回復 8# lpk187




先謝了,只差一點點就完美了,因為現在A3是3,A4是4,但表格上應該是A2是1,A3是2,A4是3,再次拜托眾大神了。

TOP

回復 9# leehom
  1. Sub worksheet_change(ByVal Target As Range)
  2.      If Target.Address = "$B$2" Then
  3.      Application.EnableEvents = False
  4.         Cells(2, Target.Column - 1) = 1
  5.      i = Application.InputBox("How many numbers you want to add?", "Prompt", , , , , , 1) - 1
  6.      For j = Target.Row + 1 To Target.Row + i
  7.          Cells(j, Target.Column) = Left(Cells(j - 1, Target.Column), 5) & Right(Cells(j - 1, Target.Column), 7) + 1
  8.          Cells(j, Target.Column - 1) = Cells(j, Target.Column - 1).Row - 1
  9.      Next
  10.      Application.EnableEvents = True
  11.      End If
  12. End Sub
複製代碼

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題