giamngucgames
Thành viên mới
- Tham gia
- 29/4/07
- Bài viết
- 21
- Được thích
- 2
Chào các anh chị, em đang cần code tạo mã vạch bằng VBA. Lang thang trên Net tim được chương trình này, rất hay nhưng trình độ có hạn nên em không sửa được code vba theo ye muốn
- Code của file như sau:
Em không muốn tạo nút hoặc Alt + F8 để chạy marco nên em nhờ các anh sửa lại thành hàm được không ạ, khi thay đổi giá trị thì code sẽ tự đổi mã vạch luôn (em đã viết Worksheet_Change tại vị trí của Sheet cần hiển thị mã vạch)
Download chương trình theo link sau: http://www.mediafire.com/?3lxg91gh52w0a5m
- Code của file như sau:
Mã:
Public Sub Create_Barcodes()
' Copyright (c) by Schenk & Horn, www.activebarcode.de
ScreenUpdating = False
' Column the data is stored
DataColumn = "A"
' Number of Row the data begins
DataRow = 8
' Number of Column the barcodes shall be placed
BarcodeColumn = "B"
i = DataRow
continue = True
While continue
' CurrentCell
DataCell = DataColumn & i
CurrentCell = BarcodeColumn & i
' Get Size of cell
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
' Place the barcode control exactly into a cell
ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarcodeCtrl.1", Link:=False _
, DisplayAsIcon:=False, Width:=MyWidth, Height:=MyHeight, Top:=MyTop, Left:=MyLeft).Select
BarcodeName = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
' Set Barcode properties
ActiveSheet.OLEObjects(BarcodeName).Object.ShowText = True
ActiveSheet.OLEObjects(BarcodeName).Object.Font.Size = 8
ActiveSheet.OLEObjects(BarcodeName).Object.Borderwidth = 0
ActiveSheet.OLEObjects(BarcodeName).Object.Borderheight = 1
ActiveSheet.OLEObjects(BarcodeName).Object.Type = 14 ' code 128
ActiveSheet.OLEObjects(BarcodeName).Object.PrintFix = True
' set Barcode text
ActiveSheet.OLEObjects(BarcodeName).Object.Text = Range(DataCell)
' next data if available
continue = Len(Range(DataColumn & i + 1)) > 11
i = i + 1
Wend
ActiveSheet.OLEObjects(BarcodeName).Object.PrintFix = False
ScreenUpdating = True
End Sub
Em không muốn tạo nút hoặc Alt + F8 để chạy marco nên em nhờ các anh sửa lại thành hàm được không ạ, khi thay đổi giá trị thì code sẽ tự đổi mã vạch luôn (em đã viết Worksheet_Change tại vị trí của Sheet cần hiển thị mã vạch)
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$8" Then
Call Create_Barcodes
End If
End Sub
Download chương trình theo link sau: http://www.mediafire.com/?3lxg91gh52w0a5m