回復 8#GBKEE
哇哈哈!終於讓我有機會「班門弄斧」啦。
小弟不才,但是讓我找到了mid函數,我利用mid將姓名字串分割。所以就加了一些語法:
Option Explicit
Sub Worksheet_Activate()
Dim a, b, c As String, Sh As Worksheet, Pr As Range
a = Sheets("基本設定").Range("i5").Value '已輸入的姓名欄
b = Mid(a, 1, 2) '分割姓名
c = Mid(a, 3, 1) '分割姓名
Set Sh = Sheets("印章")
Set Pr = Sh.[b1]
With Sh
With .[a10]
.FormulaR1C1 = b & Chr(10) & c & "印" '把姓名前兩字和最後一字加上印強迫換行
.Font.Size = 15
.Font.ColorIndex = 3
.Font.Name = "華康古印體(P)"
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.MergeCells = False
.Copy
End With
With .Pictures.Paste
.Placement = xlMoveAndSize
.PrintObject = True
.Top = Pr.Top
.Left = Pr.Left
.ShapeRange.Fill.Visible = msoFalse
.ShapeRange.Line.Visible = msoFalse
.ShapeRange.Line.Weight = 1
.ShapeRange.Line.ForeColor.SchemeColor = 10
.Select
End With
.[a10] = ""
End With
End Sub作者: skyutm 時間: 2012-10-6 20:54
抱歉!還是要感謝版大熱心的教導,不過因為小弟覺得太複雜了。所以研究了這麼一段時間之後。我又去找了些語法,只是在圖片貼上之後,做一些調整移動。
With Sheets("成績單")
For i = 0 To j
.Paste Destination:=.Range("d" & 22 + 26 * i)
.Pictures.ShapeRange.IncrementLeft 45
.Pictures.ShapeRange.IncrementTop 5
Next i
End With
但是又有問題ㄝ,因為迴圈會一直跑,所以會看到執行時,印章會一直不斷的移動,最前面的印章會移動最多次,甚至跑出範圍(由時會覺得很蠢!)所以又改成:
With Sheets("成績單")
For i = 0 To j
.Paste Destination:=.Range("d" & 22 + 26 * i)
Next i
.Pictures.ShapeRange.IncrementLeft 45
.Pictures.ShapeRange.IncrementTop 5
End With
就是在迴圈跑完,印章都貼完之後,在一起移動圖片,但是,因為活頁簿裡也有其他圖片,所以也會跟著移動。真是傷腦筋。有沒有語法是在迴圈複製一張圖片之後,就立刻移動。下一張複製時就不會再移動到了?作者: GBKEE 時間: 2012-10-13 08:07
回復 16#GBKEE
抱歉!狗腿是有目的的,還有一個未解開的問題要請教!
小弟的構想是想要在成績輸入完成之後另存新檔,也在本論壇和網路上做過功課,修改後的語法如下
Sub macor24()
Dim a, b, u, v, r, n As String
a = Sheets("基本設定").Range("a6").Value
b = Sheets("基本設定").Range("a8").Value
u = Sheets("基本設定").Range("j1").Value
v = Sheets("基本設定").Range("j2").Value
r = "C:\Documents and Settings\Administrator\桌面\"
n = a & "學年度" & b & "學期" & u & "年" & v & "班成績檔"
Sheets("成績儲存").Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=r & n & ".xlsx", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ThisWorkbook.Close savechanges:=True
End Sub
也如預期般可以在桌面存成另一個新檔,但是問題來了,因為這個工作表內有vba程式語法,所以另存新檔後,便會出現問題,就是有些語法會超出範圍,想請教一下,在複製工作表時有無選項,可以不用複製到裡面的語法嗎?再次感謝!作者: GBKEE 時間: 2012-10-14 07:17