Câu hỏi mới về sử dụng TextBox

  • Thread starter Thread starter duongnc
  • Ngày gửi Ngày gửi
Liên hệ QC

duongnc

Thành viên mới
Tham gia
9/5/08
Bài viết
36
Được thích
4
Chào các bác,

Em có một câu hỏi nho nhưng khá khó, khó vì chưa từng thấy ai đề cập đến bao giờ cả.

Em muốn tạo một file excel và một file word trong đó sẽ xây dựng một macro. Nhiệm vụ của macro này là tạo header và footer tự động. Nội dung của header là: "Tên nhân viên: Nguyen Van A".

Yêu cầu đối với macro như sau:

- Nếu header chưa có gì thì hiện ra một textbox trống để nhập tên nhân viên vào.
- Nếu header đã có tên Nguyen Van A thi hiện ra một textbox da có sẵn nội dung là "Nguyen Van A", người sử dụng có thể sửa lại thành Nguyen Thi A và nhấn OK, macro sẽ tự động cập nhật nội dung mới của header.

Vấn đề khó khăn của em là em không biết cách nào lấy được nội dung hiện tại của header cho vào textbox.

Vậy, làm phiền bác nào biết cách nào thực hiện thì chỉ giáo cho em với.

Xin chân thành cảm ơn.
 
Header và Footer của Word hay Excel?
 
Upvote 0
Chào các bác,

Em có một câu hỏi nho nhưng khá khó, khó vì chưa từng thấy ai đề cập đến bao giờ cả.

Em muốn tạo một file excel và một file word trong đó sẽ xây dựng một macro. Nhiệm vụ của macro này là tạo header và footer tự động. Nội dung của header là: "Tên nhân viên: Nguyen Van A".

Yêu cầu đối với macro như sau:

- Nếu header chưa có gì thì hiện ra một textbox trống để nhập tên nhân viên vào.
- Nếu header đã có tên Nguyen Van A thi hiện ra một textbox da có sẵn nội dung là "Nguyen Van A", người sử dụng có thể sửa lại thành Nguyen Thi A và nhấn OK, macro sẽ tự động cập nhật nội dung mới của header.

Vấn đề khó khăn của em là em không biết cách nào lấy được nội dung hiện tại của header cho vào textbox.

Vậy, làm phiền bác nào biết cách nào thực hiện thì chỉ giáo cho em với.

Xin chân thành cảm ơn.

Key của vần đê này là: ActiveSheet.PageSetup.CenterFooter.
Bạn xem file đính kèm nhé. Word hay excel đều có cách làm tương tự! (Nghĩa là Record lại Macro và sau đó chỉnh sửa chút đỉnh!)
 

File đính kèm

Upvote 0
cho mình hỏi thêm !

tuấn kiệt ơi ! chi mình hỏi thêm chút nữa là đánh số trang in và phần header thì làm thế nào ! -\\/.
 
Upvote 0
tuấn kiệt ơi ! chi mình hỏi thêm chút nữa là đánh số trang in và phần header thì làm thế nào ! -\\/.

Cái này đâu có khó, bạn record Macro các thao tác này là sẽ hiểu thôi:
PHP:
With ActiveSheet.PageSetup
  .LeftHeader = "Góc trái Header"
  .CenterHeader = "Ở giữa Header"
  .RightHeader = "Góc phải của Header"
  .LeftFooter = "Góc trái Footer"
  .CenterFooter = "Ở giữa Footer"
  .RightFooter = "&P/&N"    "Đánh số trang
End With
 
Upvote 0
Key của vần đê này là: ActiveSheet.PageSetup.CenterFooter.
Bạn xem file đính kèm nhé. Word hay excel đều có cách làm tương tự! (Nghĩa là Record lại Macro và sau đó chỉnh sửa chút đỉnh!)

Cảm ơn bác Tuấn Kiệt,

Đúng như bác nói Key của vấn đề chính là ActiveSheet.PageSetup.CenterFooter. Em đã giải quyết được các yêu cầu trong file excel. Vậy làm phiền bác cho em hỏi nếu em làm cho file word thì Key của vấn đề là gì. Em đã thử ActiveDocument.PagSetup nhưng không biết thế nào nữa. Bác thông cảm em mới nghiên cứu VBA từ khi biết GPE thời gian gần đây thôi nên trình độ còn ABC lắm.
 
Upvote 0
Cảm ơn bác Tuấn Kiệt,

Đúng như bác nói Key của vấn đề chính là ActiveSheet.PageSetup.CenterFooter. Em đã giải quyết được các yêu cầu trong file excel. Vậy làm phiền bác cho em hỏi nếu em làm cho file word thì Key của vấn đề là gì. Em đã thử ActiveDocument.PagSetup nhưng không biết thế nào nữa. Bác thông cảm em mới nghiên cứu VBA từ khi biết GPE thời gian gần đây thôi nên trình độ còn ABC lắm.

Trong Word, bạn record macro tương tự như đã đề cập bên dưới, và Key là:
PHP:
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.TypeText Text:="Đây là Header"     "Gán thông tin Header
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldPage   "Chèn thứ tự trang
    Selection.TypeText Text:="/"
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldNumPages   "Chèn tổng số trang
    "===========================================================
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    Selection.TypeText Text:="Đây là Footer" & vbTab
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldPage
    Selection.TypeText Text:="/"
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldNumPages
 
Upvote 0
Trong Word, bạn record macro tương tự như đã đề cập bên dưới, và Key là:
PHP:
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.TypeText Text:="Đây là Header"     "Gán thông tin Header
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldPage   "Chèn thứ tự trang
    Selection.TypeText Text:="/"
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldNumPages   "Chèn tổng số trang
    "===========================================================
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    Selection.TypeText Text:="Đây là Footer" & vbTab
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldPage
    Selection.TypeText Text:="/"
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldNumPages

Cảm ơn bác,

Cái này thì cũng đã biết làm, vấn đề khó khăn của em là làm sao em đưa được nội dung của header có sẵn ra được textbox thì em chưa biết làm. Bác chỉ cho em với vì không thể record macro được.
 
Upvote 0
Cảm ơn bác,

Cái này thì cũng đã biết làm, vấn đề khó khăn của em là làm sao em đưa được nội dung của header có sẵn ra được textbox thì em chưa biết làm. Bác chỉ cho em với vì không thể record macro được.

Cách gán thông tin từ text box vào header giống như excel thôi bạn à.
Ví dụ bạn có textbox1 là "Nguyen Van A"
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.TypeText Text:= textbox1 "Gán thông tin Header
.................
 
Upvote 0
Cách gán thông tin từ text box vào header giống như excel thôi bạn à.
Ví dụ bạn có textbox1 là "Nguyen Van A"

Bác hiểu nhầm ý của em rồi, việc ghi nội dung từ textbox vào header không khó. Vấn đề là em không biết làm cách nào khi chạy macro, textbox hiện lên thì đã có nội dung cũ của header rồi (thực ra em chỉ cần một phần của header thôi), khi đó người sử dụng chỉ việc sửa lại nội dung cũ thành nội dung mới. (giống như file excel có code là Me.Textbox1 = ActiveSheet.PageSetup.CenterFooter ấy mà).
 
Upvote 0
Bác hiểu nhầm ý của em rồi, việc ghi nội dung từ textbox vào header không khó. Vấn đề là em không biết làm cách nào khi chạy macro, textbox hiện lên thì đã có nội dung cũ của header rồi (thực ra em chỉ cần một phần của header thôi), khi đó người sử dụng chỉ việc sửa lại nội dung cũ thành nội dung mới. (giống như file excel có code là Me.Textbox1 = ActiveSheet.PageSetup.CenterFooter ấy mà).

Có phải ý của bạn như thế này không? Bạn xem thử file đính kèm, chế biến chút xíu nữa chắc là được.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Có phải ý của bạn như thế này không? Bạn xem thử file đính kèm, chế biến chút xíu nữa chắc là được.

Cảm ơn bác,

Đúng thắc mắc của em rồi. Giải quyết được thắc mắc chính rồi thì các phần khác em sẽ tự chế biến được. Cảm ơn bác nhiều lắm.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom