標題:
請教,如何隱藏儲存格內的圖片?如何快速指定列印頁?
[打印本頁]
作者:
eigen
時間:
2013-10-24 16:37
標題:
請教,如何隱藏儲存格內的圖片?如何快速指定列印頁?
本帖最後由 GBKEE 於 2013-10-25 15:01 編輯
請教 excel 高手,如何隱藏儲存格內的圖片?如何快速指定列印頁?
我用 excel 2003 設計了一個列印支票的程式,排版、程式大都ok 了,可以用,但是自己對自己不滿意
現在卡在幾個 細節問題:
一、支票如果在左上角加上斜線,就不能直接領現金,要代收
我在輸入頁設計了一個狀態,我不知道怎麼隱藏這個圖片
=IF(INDEX(輸入!$B$2:$B$51,A10,1)=1,顯示圖片,不顯示圖片)
請高手指點,怎麼做到這一點。
二、能否做到當我在 輸入頁的第15行時,利用vba 跳到 支票頁的第14頁?
三、這個是設計手工單張列印,所以會一張一張印,
真的操作時,我發現
excel 要列印指定頁時,非常難設定。
有沒有比較好的建議?例如當 游標在 輸入頁的 第四行(第三張支票),由目前的游標所在位置,透過 vba 將支票頁第三頁列印出來?
請高手給個建議,謝謝~~
附上我完成90%的成品,請高手指點~~
https://dl.dropboxusercontent.co ... 5%A8_GD_1234500.xls
作者:
GBKEE
時間:
2013-10-24 17:55
回復
1#
eigen
Option Explicit
Sub Ex()
'**********************************************
'在Sheets("輸入")中滑鼠選擇要印列的支票 ,執行此程式
'**********************************************
Dim E As Range
Sheets("輸入").Activate
For Each E In Selection.EntireRow
If E.Row > 1 And E.Range("B1") <> 0 And Application.CountA(E.Range("A1:G1")) = 7 Then
'E.Row > 1 ->第2列以後的資料
'E.Range("B1") <> 0 ->作廢
'Application.CountA(E.Range("A1:G1")) = 7 ->支票資料要齊全
With Sheets("支票頁")
.Range("A1:G10").Name = "Print_Area" '印列範圍(一張支票:可先調整印列紙張的大小)
.[A4] = E.Range("E1") '填上 :支票的資料
.[A5] = E.Range("C1")
.[A6] = E.Range("C1")
.[A7] = E.Range("F1")
.[A9] = E.Range("G1").Text
.[D3] = E.Range("D1")
.[D4] = exchange(E.Range("F1"))
.[C5] = E.Range("F1")
.[E2].Resize(, 3) = Split(E.Range("E1").Text, "/")
.Pictures.Visible = True '顯示 圖片
If E.Range("B1") <> 1 Then .Pictures.Visible = False '隱藏 圖片
.PrintOut '印列
End With
End If
Next
End Sub
複製代碼
作者:
eigen
時間:
2013-10-25 03:41
本帖最後由 eigen 於 2013-10-25 03:44 編輯
回復
2#
GBKEE
謝謝,我參考你提供的資料,改成下述兩個,分別加入快速鍵 ctrl + b ,列印一張支票, ctrl+g 在支票頁 和 輸入 間切換。
解決了 問題 二和 三,現在只剩下問題一
我是希望在改變 狀態時, 相對應支票上的圖就會改變,請問該如何達到這樣的目的,謝謝
參考資料已經修正,現在只剩下問題一 ,麻煩提點一下~~~:loveliness:
https://dl.dropboxusercontent.com/u/12575824/%E6%94%AF%E7%A5%A8_GD_1234500.xls
Option Explicit
Sub CheckPrint()
'**********************************************
'在Sheets("輸入")中滑鼠選擇要印列的支票 ,執行此程式
'**********************************************
Dim E As Range
Sheets("輸入").Activate
For Each E In Selection.EntireRow
If E.Row > 1 And E.Row < 52 And E.Range("B1") <> 0 And Application.CountA(E.Range("A1:G1")) = 7 Then
With Sheets("支票頁")
.PrintOut From:=E.Row-1, To:=E.Row-1 '印列
End With
End If
Next
End Sub
Sub CheckPreview()
Dim E As Range
If Sheets("支票頁") Is ActiveSheet Then
Sheets("輸入").Activate
else
'Sheets("輸入").Activate
For Each E In Selection.EntireRow
If E.Row > 1 And E.Row < 52 And E.Range("B1") <> 0 And Application.CountA(E.Range("A1:G1")) = 7 Then
Sheets("支票頁").Activate
Cells(601, 256).Select
Cells((E.Row - 2) * 10 + 4, 4).Select
End If
Next
End If
End Sub
複製代碼
作者:
eigen
時間:
2013-10-25 03:57
回復
3#
eigen
我有在網路上找到讓圖片 Visible /hide 的方法,用 button 測試,真的可以
問題是要怎麼和 輸入的 狀態連結?(終於快要接近95%滿意度) 指救一下,謝謝
Private Sub CommandButton1_Click()
If Sheets("支票頁").Shapes("圖片 1").Visible = msoFalse Then
Sheets("支票頁").Shapes("圖片 1").Visible = msoTrue
Else
Sheets("支票頁").Shapes("圖片 1").Visible = msoFalse
End If
End Sub
複製代碼
作者:
GBKEE
時間:
2013-10-25 15:01
本帖最後由 GBKEE 於 2013-10-27 16:01 編輯
回復
3#
eigen
2# 的程式碼 只需在支票頁設計一張支票,就可印列輸入表中所有的支票
你說: 我是希望在改變 狀態時, 相對應支票上的圖就會改變
2#這兩行程式碼 可依B欄的狀態,相對應支票上的圖就會改變
.Pictures.Visible = True '顯示 圖片
If E.Range("B1") <> 1 Then .Pictures.Visible = False '隱藏 圖片
複製代碼
依你檔案改變狀態時,的程式碼.
輸入工作表模組的預設事件程式碼
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And (Target.Row >= 2 And Target.Row <= 51) Then
Sheets("支票頁").Shapes("圖片 " & Target.Row - 1).Visible = False
If Target = 1 Then Sheets("支票頁").Shapes("圖片 " & Target.Row - 1).Visible = True
End If
End Sub
複製代碼
作者:
eigen
時間:
2013-10-25 15:57
回復
5#
GBKEE
會這樣設計,是考量到雖然現在是一張一張印
但是日後有可能一次印多張
所以採用50張全部顯示
用拮定頁數的方式列印
作者:
GBKEE
時間:
2013-10-26 17:15
回復
6#
eigen
50張全部列印 ->2#程式: 全選所有支票
指定頁數的方式列印 ->2#程式: 可選擇要印列的支票
作者:
eigen
時間:
2013-10-27 15:39
回復
7#
GBKEE
一、GBKEE 非常感謝你的協助。感謝有 麻辣家族這個討論區,同樣的東西丟在 mobile01 完全沒人理我。
我對vba的了解並不深入,只能邊做邊學,因此你寫的程式,2# 程式的功能,我就不大能完全了解。
不過舉一反三,到是難不倒我,所以我自己改寫成我需要的部份。
至於 6# 你提到的功能,我會去測試看看。
二、而 你提供 5# 的Private Sub Worksheet_Change(ByVal Target As Range) 這個程序
我也有測試,我發現有一個很大的盲點,當我一次選擇多個 status 時,一次修改(例如全部設為 0 或 1)
程式會出現問題。
後來我改用
Function BankPic(switch As Integer, pic As Integer)
If switch = 1 Then
Sheets("支票頁").Shapes("圖片 " & pic).Visible = msoTrue
Else
Sheets("支票頁").Shapes("圖片 " & pic).Visible = msoFalse
End If
BankPic = 0
End Function
複製代碼
並在支票頁 的 a8 加入 =bankpic(IF(INDEX(輸入!$B$2:$B$51,H1,1)=1,1,0),H1)
用這樣的方式來控制圖片是否顯示
三、取之於網路,用之於網路,我將我目前完成約 98% 的檔案,和大家分享。
這是將整張支票本拆開來打印的程序,將 支票頁 切換成標準模式,就可以看到完整的畫面
如果不拆支票本,直接撕支票來印,只要將 支票頁的 A 欄整個刪除,或調整列印範圍即可
這個程序我是用華南銀行的支票來套表的,如果要用在其它家,需要稍稍調整一下欄寬和列高。
程式上有加上保護,沒有密碼,解除保護就可以直接修改。
檔案下載
https://dl.dropboxusercontent.com/u/12575824/%E9%96%8B%E6%94%AF%E7%A5%A8%20eigen.rar
作者:
GBKEE
時間:
2013-10-27 15:59
本帖最後由 GBKEE 於 2013-10-27 16:01 編輯
回復
8#
eigen
再試試看看
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim E As Range
For Each E In Target.Cells
If E.Column = 2 And (E.Row >= 2 And E.Row <= 51) Then
Sheets("支票頁").Shapes("圖片 " & E.Row - 1).Visible = False
If E = 1 Then Sheets("支票頁").Shapes("圖片 " & E.Row - 1).Visible = True
End If
Next
End Sub
複製代碼
作者:
eigen
時間:
2013-10-28 16:13
回復
9#
GBKEE
謝謝~~太感謝你了~~~(沒想到用 excel 印資料能這麼方便)
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)