2011-01-12 12 views
3

私たちは棚卸資産をExcelで管理しています。私は少し古風なことを知っていますが、私たちはビジネス会社を開発しており、私たちはお金をビジネスに閉じ込めており、ITに投資するお金はありません。Excel部分入力(数字)の自動補完のプログラミング

私は、Excelが自動的に製品番号を完成させる方法でプログラムできることを知りたがっていましたか?

これはすべて私たちのデザインコードは、私が本当にしたいことは部分的にしか番号が追加され、それを入力ヒットしたときに自動的に取ることによって、残りの桁を完了することで、6桁の数字である1つの製品カテゴリ
Example

の一例です上記の数字。

たとえば、この場合、私は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

ニース。私はイベントを無効にするために編集し、それ以外の場合は2回呼び出されます。 –

+0

@Dick:編集してくれてありがとう、自分自身で追加したはずです。私はイベントが2回呼び出されたことは知っていましたが、テスト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