2016-10-06 11 views
0

Excelでマクロを作成して、チェックサム付きの偽のバーコードを生成するためにyyyymmdd形式の日付にセルの行番号を追加します。最初の部分は10000を掛けた現在の日付を使用して、現在の行番号を追加:範囲を拡張するときにActiveRowを更新するVBA(Excel)

Public Function CreateBarcode() As Double 

Dim BCode As Double 

BCode = Format(Now(), "yyyymmdd") 
BCode = BCode * 10000 
BCode = BCode + ActiveCell.Row 

CreateBarcode = BCode 
End Function 

私は明示的にセルにそれを呼び出し、Enterキーを押すと機能が動作します。しかし、私がA1セルでそれを呼び出して、セルの下隅にある黒い十字を使って選択範囲を下げると、元のRow番号が保持され、生成されたすべての数字は同じになります。

ActiveCellを使用するのではなく、実際の行番号を使用するようにコードを作成するにはどうすればよいですか?

+0

することは確かに、ActiveCellのは、あなたが現在いる細胞を意味します。 CurrentRegion'Set rng = Range( "A1")。CurrentRegion – Ary

答えて

3

はい、値を確認するために必要なセル(範囲)を関数に渡す必要があります。

だから、セルA1を参照して、次の数式を入力する必要があり、あなたはセルA1のためにそれを使用するためにwan't言わせて:

=CreateBarcode(A1) 

その後、休息のためにそれを下にドラッグすることができますA列のセルのあなたの下

がCell referneceとあなたの関数のために編集したコードを見つけることができますが渡さ:あなた以下

Public Function CreateBarcode(cellRef As Range) As Double 

Dim BCode As Double 

BCode = Format(Now(), "yyyymmdd") 
BCode = BCode * 10000 
BCode = BCode + cellRef.Row 

CreateBarcode = BCode 

End Function 

は、シートの結果とスクリーンショットを見つけることができます(私の後上記の変更)mplementing:

enter image description here

+0

優秀な、より良い、ありがとう! – pickarooney

関連する問題