אזור הדפסה

אזור הדפסה

שלום רב,
יש דבר אחד, אותו לא ניתן להגדיר תוך בחירת גליונות רבים... - אזור הדפסה.
(גם אם היה מדובר בטבלאות זהות.. אקסל לא מאפשר).
ואני תוהה האם יש דרך אולי באמצעות מקרו לאפשר הגדרת אזור הדפסה, לחוברת שלמה, ע"פ קריטריונים קבועים, באיבחת מקש אחת... :) ?
מדובר בגליונות עם טבלאות שונות. בד"כ יהיו גם הערות ולעיתים טבלאות עזר (משמאל לטבלה הראשית, אך אלה אינם מיועדים להדפסה).
מה שמאפיין 'טבלה' (אצלי...) זה גבולות ועיצוב אחת השורות ברוחב הטבלה !!!
בקובץ שצרפתי - פס כחול.
יש גם טבלאות ללא רצף, כפי שניתן לראות בגליון 3.
(הערה : יתכנו עיצובים דומים בתוך הטבלאות עצמן).
והבקשה שלי - הגדרת אזור הדפסה כמפורט :
התחלה - תא A1
סיום - סוף הנתונים
(בדוגמה המצורפת - I23 , J20, F28, R38).

תודה
(ווינדוס 7, אקסל 2010, 2016)
 

מיכאל אבידן

Member
מנהל
אחת האפשרויות מוצגת להלן . . .


קוד:
Sub Micky()
    For Each SH In ActiveWorkbook.Sheets
          URC = SH.UsedRange.Columns.Count
          PA = SH.UsedRange.Rows.Count + SH.UsedRange.Row - 1
          SH.PageSetup.PrintArea = ""
          SH.PageSetup.PrintArea = Range(Cells(1, 1), Cells(PA, URC)).Address
    Next
End Sub
 

u333

New member
לא לקחת בחשבון את הציטוט שלהלן:

ציטוט:
".. בד"כ יהיו גם הערות ולעיתים טבלאות עזר (משמאל לטבלה הראשית, אך אלה אינם מיועדים להדפסה). "
 

מיכאל אבידן

Member
מנהל
אם כך - לא נותר לך
אלא למצוא . . .


את מס' השורה, התכלת, באמצעות לולאה שתמצא, בעמודה, A את: Interior.ColorIndex = 24 ואז לסרוק שמאלה עד למציאת תא ששונה
מ: Interior.ColorIndex = 24 ולהפחית 1, מהתוצאה, כדי לקבל את מס' העמודה השמאלית ביותר של הטווח הנדרש ואת זאת להחיל על 'איזור ההדפסה'.
 
ואיך בדיוק ?

הוא אומנם לוקח את כל הנתונים בגיליון.
האם אפשר לקבל את 'ההשלמה' לקוד , זו שמזהה באמצעות השורה (התכולה) את העמודה האחרונה ?
תודה
 

מיכאל אבידן

Member
מנהל
אז ככה . . .


&nbsp
1. האם אפשר להניח שאין, באף אחד מהגיליונות, שום תא אחר שצבוע בתכלת פרט לשורה המגדירה את הרוחב

&nbsp
2. האם מציאת מס' העמודה, האחרונה, בפס הצבוע סוגרת לך את כל
הפינות

&nbsp
 
כן...,

השורה הזו היא היחידה הצבועה בצבע זה.
(כפי שכתבתי, יתכנו עיצובים דומים, לפעמים גם הם לרוחב הטבלה, אך בצבע אחר).
ואם תסייע לי, בבקשה, במציאת העמודה האחרונה ובשתילת הקוד בתוך הקוד הקודם..., אני מניח כי אמצא מנוחה על זרי הדפנה..., לפחות בכל הנוגע לאזור הדפסה... :)
 

מיכאל אבידן

Member
מנהל
זמני לא מאפשר לי לבדוק באופן יסודי . . .


לכן - בדוק אתה אם הקוד, הקצרצר, שלהלן עונה על בקשתך.
קוד:
Sub RetrieveLastColoredColumn()
       Application.FindFormat.Clear
       Application.FindFormat.Interior.Color = 15849925
       MsgBox "Last Colored Column: " & ActiveSheet.UsedRange.Find(, , , , , xlPrevious, , , True).Column
End Sub
 
בדקתי...

עובד ! בתנאי שזה העיצוב היחידי בצבע זה בגליון.
נכון ! אמרתי שזו השורה היחידה בגוון זה ואני עדיין עומד מאחורי אמירה זו,
אבל אם אני צובע תא אחד בטבלה בגוון זה - הקוד מתביית דווקא עליו...
אז אני אמתין בסבלנות, לך מיכאל.
ואז, אנא הסבר לי במילים פשוטות : איך... או איזה מסלול עושה הקוד למציאת הגוון ?
וגם - מה הענין הזה של ה MsgBox ... , הרי זה צריך בסופו של דבר 'לשבת' בתוך הקוד הראשון שהצגת...
 

מיכאל אבידן

Member
מנהל
אני שאלתי (ציטוט): "שום תא
אחר שצבוע בתכלת..." . . .


לא שאלתי על שורה ולא על טווח - שאלתי על תא


מרגע זה ואילך כל פעם שתצפה לתגובה ממני - היא תהיה רק
לאחר שהצגת את טענתך בקובץ
שכן אצלי שום דבר לא משתנה כשאני צובע תא, בתוך הטבלה, בצבע הזה.

אין לי ספק שתבין מדוע זה בדיוק הרגע הנכון, מבחינתי, לפרוש מהדיון הזה...

 
אתה צודק.

לא ירדתי לסוף שאלתך. אתה ציינת 'תא'.
בכל אופן צרפתי קובץ עם הקוד האחרון שהצעת.
ותודה על הכל.
 

u333

New member
למציאת העמודה האחרונה בכחול נסה את הקוד הבא

קוד:
Sub FindLastCol()
    For st = 1 To 200
        If Cells(st, 1).Interior.ColorIndex = 24 Then Exit For
    Next
    For last = 1 To 200
        If Cells(st, last).Interior.ColorIndex <> 24 Then Exit For
    Next
   MsgBox "מספר העמודה האחרונה הוא " & last - 1
End Sub
אם יש צורך תשנה את מספרי השורה והעמודה האחרונים לבדיקה.
 
האם תוכל...

להסביר... היכן שותלים את הבדיקה הזו ? והאם ה MsgBox מתייתר ?
ודבר נוסף, איפה רואים בקוד שלך שהפקודה/הלולאה רצה דווקא על עמודה A ?
 

u333

New member
אז ככה....

  • למה שלא תנסה קצת לשתול את הבדיקה ותוצאתה בקוד של מיכאל.
אם לא תצליח - תצרף לכאן את הקובץ עם הנסיונות.
  • את ריצת הלולאה הראשונה על עמודה A רואים בשורת ה-IF הראשונה.
  • ואכן ה-MsgBox מיותר. הוא ניתן רק עבור ההסבר הראשוני.
 
ובכן...

בדקתי את הקוד לפני פנייתי אליך. אפילו הנחתי/ניחשתי שאומנם שורת ה IF אחראית לכך. אבל כאשר הצבתי 2 במקום 1 ומחקתי את העיצוב בעמודה A ...
(If Cells(st, 2
התשובה הייתה 0.
אז הבנתי (אף כי ידעתי...) שאני לא מבין כלום...
מה שאני יודע הוא שהערך הראשון בתוך הסוגריים מגדיר את השורה (ואתה הגדרת לולאה עד 200) והערך השני הוא העמודה.
אז לדאבוני, נותרתי מבולבל.
בינתיים אני אנסה לשתול את הקוד כפי שהצעת..., ורק אבקשך להסביר לי מדוע זה החזיר לי 0 ...??
 

u333

New member
אז ככה....

חבל חבל שאתה לא מתעמק קצת יותר...
אם אתה משנה את התחלת הבדיקה מעמודה 1 לעמודה 2 - צריך גם לשנות את טווח הלולאה השניה - ולהתחיל לבדוק מ-2 (ולא מ-1). אז אם תשנה גם שם - תקבל כמובן את התוצאה הנכונה.
בהצלחה.
 
תודה רבה !

אני יודע שלא תאמין, כי אני בעצמי לא מאמין... אבל גיליתי את 'חצי העבודה' לבד .
ואתה יודע שאני נטול אגו לחלוטין.
מידי פעם לוחץ F5 כדי לראות היש תגובות/תשובות בשרשור.
ואני כעת, עדיין... בניסיון לשנות, בהתאם, את ה- URC בקוד של מיכאל.
לכן בינתיים לא מבקש עזרה.
 
למעלה