Board logo

標題: 請教,如何隱藏儲存格內的圖片?如何快速指定列印頁? [打印本頁]

作者: 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
  1. Option Explicit
  2. Sub Ex()
  3.     '**********************************************
  4.     '在Sheets("輸入")中滑鼠選擇要印列的支票 ,執行此程式
  5.     '**********************************************
  6.     Dim E As Range
  7.     Sheets("輸入").Activate   
  8.     For Each E In Selection.EntireRow   
  9.         If E.Row > 1 And E.Range("B1") <> 0 And Application.CountA(E.Range("A1:G1")) = 7 Then
  10.             'E.Row > 1                                      ->第2列以後的資料
  11.             'E.Range("B1") <> 0                             ->作廢
  12.             'Application.CountA(E.Range("A1:G1")) = 7       ->支票資料要齊全
  13.             With Sheets("支票頁")
  14.                 .Range("A1:G10").Name = "Print_Area"         '印列範圍(一張支票:可先調整印列紙張的大小)
  15.                 .[A4] = E.Range("E1")                        '填上 :支票的資料
  16.                 .[A5] = E.Range("C1")
  17.                 .[A6] = E.Range("C1")
  18.                 .[A7] = E.Range("F1")
  19.                 .[A9] = E.Range("G1").Text
  20.                 .[D3] = E.Range("D1")
  21.                 .[D4] = exchange(E.Range("F1"))
  22.                 .[C5] = E.Range("F1")
  23.                 .[E2].Resize(, 3) = Split(E.Range("E1").Text, "/")
  24.                 .Pictures.Visible = True                                '顯示 圖片
  25.                 If E.Range("B1") <> 1 Then .Pictures.Visible = False    '隱藏 圖片
  26.                 .PrintOut                                               '印列
  27.             End With
  28.         End If
  29.    Next
  30. 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
  1. Option Explicit
  2. Sub CheckPrint()
  3.         '**********************************************
  4.         '在Sheets("輸入")中滑鼠選擇要印列的支票 ,執行此程式
  5.         '**********************************************
  6.         Dim E As Range
  7.         Sheets("輸入").Activate   
  8.         For Each E In Selection.EntireRow   
  9.                 If E.Row > 1 And E.Row < 52 And E.Range("B1") <> 0 And Application.CountA(E.Range("A1:G1")) = 7 Then
  10.                         With Sheets("支票頁")
  11.                                 .PrintOut From:=E.Row-1, To:=E.Row-1        '印列
  12.                         End With
  13.                 End If
  14.         Next
  15. End Sub
  16. Sub CheckPreview()
  17.         Dim E As Range
  18.         If Sheets("支票頁") Is ActiveSheet Then
  19.                   Sheets("輸入").Activate
  20.         else
  21.                 'Sheets("輸入").Activate
  22.                 For Each E In Selection.EntireRow
  23.                         If E.Row > 1 And E.Row < 52 And E.Range("B1") <> 0 And Application.CountA(E.Range("A1:G1")) = 7 Then
  24.                                 Sheets("支票頁").Activate
  25.                                 Cells(601, 256).Select
  26.                                 Cells((E.Row - 2) * 10 + 4, 4).Select
  27.                         End If
  28.                 Next
  29.         End If
  30. End Sub
複製代碼

作者: eigen    時間: 2013-10-25 03:57

回復 3# eigen

我有在網路上找到讓圖片 Visible /hide 的方法,用 button 測試,真的可以

問題是要怎麼和 輸入的 狀態連結?(終於快要接近95%滿意度) 指救一下,謝謝
  1. Private Sub CommandButton1_Click()
  2. If Sheets("支票頁").Shapes("圖片 1").Visible = msoFalse Then
  3.     Sheets("支票頁").Shapes("圖片 1").Visible = msoTrue
  4. Else
  5.     Sheets("支票頁").Shapes("圖片 1").Visible = msoFalse
  6. End If

  7. End Sub
複製代碼

作者: GBKEE    時間: 2013-10-25 15:01

本帖最後由 GBKEE 於 2013-10-27 16:01 編輯

回復 3# eigen
2# 的程式碼 只需在支票頁設計一張支票,就可印列輸入表中所有的支票
你說: 我是希望在改變 狀態時, 相對應支票上的圖就會改變
2#這兩行程式碼 可依B欄的狀態,相對應支票上的圖就會改變
  1. .Pictures.Visible = True                                '顯示 圖片
  2. If E.Range("B1") <> 1 Then .Pictures.Visible = False    '隱藏 圖片
複製代碼
依你檔案改變狀態時,的程式碼.
輸入工作表模組的預設事件程式碼
  1. Option Explicit
  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     If Target.Column = 2 And (Target.Row >= 2 And Target.Row <= 51) Then
  4.         Sheets("支票頁").Shapes("圖片 " & Target.Row - 1).Visible = False
  5.         If Target = 1 Then Sheets("支票頁").Shapes("圖片 " & Target.Row - 1).Visible = True
  6.     End If
  7. 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)

程式會出現問題。

後來我改用
  1. Function BankPic(switch As Integer, pic As Integer)
  2.         If switch = 1 Then
  3.             Sheets("支票頁").Shapes("圖片 " & pic).Visible = msoTrue
  4.         Else
  5.             Sheets("支票頁").Shapes("圖片 " & pic).Visible = msoFalse
  6.         End If
  7.             BankPic = 0
  8. 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
再試試看看
  1. Option Explicit
  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     Dim E As Range
  4.     For Each E In Target.Cells
  5.         If E.Column = 2 And (E.Row >= 2 And E.Row <= 51) Then
  6.             Sheets("支票頁").Shapes("圖片 " & E.Row - 1).Visible = False
  7.             If E = 1 Then Sheets("支票頁").Shapes("圖片 " & E.Row - 1).Visible = True
  8.         End If
  9.     Next
  10. End Sub
複製代碼

作者: eigen    時間: 2013-10-28 16:13

回復 9# GBKEE

謝謝~~太感謝你了~~~(沒想到用 excel 印資料能這麼方便)




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)