2011-01-12 40 views
3

我們在Excel中管理我們的庫存。我知道它的老套,但我們正在開發商業公司,並且我們的所有資金都被封鎖在業務中,沒有錢投資IT。Excel編程自動完成部分輸入(數字)

所以我想知道我可以用excel自動完成產品編號的方式進行編程嗎?

這是例如一個產品類別的
Example

我們所有的設計代碼是6位數字,我真正想要的是,當只有部分號碼追加並回車就採取自動完成剩下的數字以上數字。

因此,例如在這種情況下,我期待的是,如果我輸入5命中,根據上面的數字自動輸入790705

回答

2

以下VBA代碼添加到您的工作表的代碼段:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim oldText As String, aboveText As String, newText As String 
    If Target.Column = 2 And Target.Row >= 3 And Target.Text <> "" Then 
     oldText = Target.Text 
     aboveText = Target.Cells(0, 1).Text 
     If Len(aboveText) = 6 And Len(oldText) < 6 Then 
      newText = Left(aboveText, 6 - Len(oldText)) & oldText 
      Application.EnableEvents = False 
       Target.Value = newText 
      Application.EnableEvents = True 
     End If 
    End If 
End Sub 

(更改根據您的工作表中的實際列/行號上面列數和最小的行數)。

+0

感謝你非常非常非常much.It將節省大量的時間,同時增加股票 – Shishant

+1

尼斯。我編輯禁用事件,否則它會被調用兩次。 –

+0

@迪克:感謝編輯,應該由我自己添加。我知道事件被調用了兩次,但是由於Len(oldText)<6阻止了例程無限遞歸,所以忽略它。 –

0
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    If (Target.Column = 2 And Target.Row > 2 And Target.Value < 10) Then 
     Target = Target.Offset(rowOffset:=-1) + 1 
    End If 
End Sub 

只要你在新行中輸入一個數字遠,將其轉換爲前一行+ 1