תוכנה לסימון חזרות
-
@odeddvir אמר בתוכנה לסימון חזרות:
@פלורידה אפשר על ידי כלי המפתחים:
א. האם אפשר לעשות שלחיצה על התיבה, תתן ערך (של 1/2) בתא אחר?
ב. האם אפשר לשלוט בגודל של התיבה ובעיצוב שלה?, (אני לא מצליח להגדיל את הריבוע)
@פלורידה אמר בתוכנה לסימון חזרות:
א. האם אפשר לעשות שלחיצה על התיבה, תתן ערך (של 1/2) בתא אחר?
אפשר לאגד את התיבה לתא אחר, שישתנה לTrue/False בהתאמה. ניתן אחר כך לסכם את התאים המאוגדים וכו'.
ב. האם אפשר לשלוט בגודל של התיבה ובעיצוב שלה?, (אני לא מצליח להגדיל את הריבוע)
לא. זו אחת מתעודות העניות של מיקרוסופט, שלא שינו את הפקד במשך דורות.
-
@odeddvir אמר בתוכנה לסימון חזרות:
ב. האם אפשר לשלוט בגודל של התיבה ובעיצוב שלה?, (אני לא מצליח להגדיל את הריבוע)
לא. זו אחת מתעודות העניות של מיקרוסופט, שלא שינו את הפקד במשך דורות.
מצאתי את התבנית הזו לוח מטלות שבועי.xlsm יש בה תאים שעל ידי לחיצה על התא פעמיים, הוא כותב "בוצע" ונותן ערך לתא 1, אני מאמין שזה יוכל לעזור לי.
מה שהצלחתי להבין, שהתא מוגדר ב"מותאם אישית", שערך מספרי כלשהו = בוצע
"בוצע";" ";" "
ובעיצוב מותנה כשהערך גבוה מ=1 התא מקבל סימון v
כמובן שאם אני מוחק את המילים בוצע, הרי מתקבל לי פקד תוכן שנותן v עם ערך 1
מה שאני עדיין לא מבין, איך עושים שעל ידי לחיצה כפולה הוא נותן לתא ערך = 1 (וכשאלה נגזרת, האם אפשר לעשות שייוצר על ידי לחיצה בודדת)
-
@odeddvir אמר בתוכנה לסימון חזרות:
ב. האם אפשר לשלוט בגודל של התיבה ובעיצוב שלה?, (אני לא מצליח להגדיל את הריבוע)
לא. זו אחת מתעודות העניות של מיקרוסופט, שלא שינו את הפקד במשך דורות.
מצאתי את התבנית הזו לוח מטלות שבועי.xlsm יש בה תאים שעל ידי לחיצה על התא פעמיים, הוא כותב "בוצע" ונותן ערך לתא 1, אני מאמין שזה יוכל לעזור לי.
מה שהצלחתי להבין, שהתא מוגדר ב"מותאם אישית", שערך מספרי כלשהו = בוצע
"בוצע";" ";" "
ובעיצוב מותנה כשהערך גבוה מ=1 התא מקבל סימון v
כמובן שאם אני מוחק את המילים בוצע, הרי מתקבל לי פקד תוכן שנותן v עם ערך 1
מה שאני עדיין לא מבין, איך עושים שעל ידי לחיצה כפולה הוא נותן לתא ערך = 1 (וכשאלה נגזרת, האם אפשר לעשות שייוצר על ידי לחיצה בודדת)
@פלורידה אמר בתוכנה לסימון חזרות:
מה שאני עדיין לא מבין, איך עושים שעל ידי לחיצה כפולה הוא נותן לתא ערך = 1 (וכשאלה נגזרת, האם אפשר לעשות שייוצר על ידי לחיצה בודדת)
מצאתי כאן את הקוד הזה
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next If Not Intersect(Target, Range("A1")) Is Nothing Then Range("A1").Value = Range("A1").Value + 1 Cancel = True End If End Sub
בכל פעם שאלחץ על תא
a1
הוא יקבל תוספת של 1 אם נניח הערך שקיים בו הוא 173, על ידי לחיצה הוא יהיה 174.מה שאני רוצה לעשות שכאשר אני לוחץ פעם שנייה הוא יהיה 0, כלומר פעם אחת הוא יהיה 0 פעם שניה 1 וכן הלאה.
כמו כן מצאתי את הקוד הזה, שאמנם עושה v בלחיצה כפולה, ומסיר אותו בפעם השניה, אך לא נותן ערך לתא.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("B1:B10")) Is Nothing Then Application.EnableEvents = False If ActiveCell.Value = ChrW(&H2713) Then ActiveCell.ClearContents Else ActiveCell.Value = ChrW(&H2713) End If Cancel = True End If Application.EnableEvents = True End Sub
אולי ניתן ליצור נוסחה
v=1
???? -
@פלורידה אמר בתוכנה לסימון חזרות:
מה שאני עדיין לא מבין, איך עושים שעל ידי לחיצה כפולה הוא נותן לתא ערך = 1 (וכשאלה נגזרת, האם אפשר לעשות שייוצר על ידי לחיצה בודדת)
מצאתי כאן את הקוד הזה
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next If Not Intersect(Target, Range("A1")) Is Nothing Then Range("A1").Value = Range("A1").Value + 1 Cancel = True End If End Sub
בכל פעם שאלחץ על תא
a1
הוא יקבל תוספת של 1 אם נניח הערך שקיים בו הוא 173, על ידי לחיצה הוא יהיה 174.מה שאני רוצה לעשות שכאשר אני לוחץ פעם שנייה הוא יהיה 0, כלומר פעם אחת הוא יהיה 0 פעם שניה 1 וכן הלאה.
כמו כן מצאתי את הקוד הזה, שאמנם עושה v בלחיצה כפולה, ומסיר אותו בפעם השניה, אך לא נותן ערך לתא.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("B1:B10")) Is Nothing Then Application.EnableEvents = False If ActiveCell.Value = ChrW(&H2713) Then ActiveCell.ClearContents Else ActiveCell.Value = ChrW(&H2713) End If Cancel = True End If Application.EnableEvents = True End Sub
אולי ניתן ליצור נוסחה
v=1
????@פלורידה אמר בתוכנה לסימון חזרות:
אך לא נותן ערך לתא.
זה לא מדויק. למעשה הוא נותן ערך לתא, התא מכיל את התו
ChrW(&H2713)
.@פלורידה אמר בתוכנה לסימון חזרות:
אולי ניתן ליצור נוסחה v=1????
לא. אבל אפשר לסכם לפי תנאי, אם התא ריק אז להוסיף 0, ואם יש בו ערך כלשהוא (או ליתר דיוק את התו הנ"ל) להוסיף 1.
ואפשר גם להכניס בפועל את הערך True/False ולהשתמש בעיצוב מתנה כדי להציג V. -
@פלורידה אמר בתוכנה לסימון חזרות:
אך לא נותן ערך לתא.
זה לא מדויק. למעשה הוא נותן ערך לתא, התא מכיל את התו
ChrW(&H2713)
.@פלורידה אמר בתוכנה לסימון חזרות:
אולי ניתן ליצור נוסחה v=1????
לא. אבל אפשר לסכם לפי תנאי, אם התא ריק אז להוסיף 0, ואם יש בו ערך כלשהוא (או ליתר דיוק את התו הנ"ל) להוסיף 1.
ואפשר גם להכניס בפועל את הערך True/False ולהשתמש בעיצוב מתנה כדי להציג V.@odeddvir אמר בתוכנה לסימון חזרות:
לא. אבל אפשר לסכם לפי תנאי, אם התא ריק אז להוסיף 0, ואם יש בו ערך כלשהוא (או ליתר דיוק את התו הנ"ל) להוסיף 1.
זה ממש רעיון מבריק. איך עושים את זה?
כלומר: איך מסכמים לפי תנאי? או לחילופין מה שם הנוסחה??.
למתעניינים צירפתי את הפיתרון שאני בחרתי לצורך המסמך שאני עורך
הכנסתי את הקוד הזה:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
Application.EnableEvents = False
If ActiveCell.Value = Date Then
ActiveCell.ClearContents
Else
ActiveCell.Value = Date
End If
Cancel = True
End If
Application.EnableEvents = True
End Subהמשמעות שלו, שלחיצה תתן את התאריך
[אני כבר יעלים אותו על ידי התאמת אישית לסוג" ";" ";" "
ככה:
ובכך אני מרויח שניתן לחקור את התאריך שבו ניתן הסימון.
כמובן שהבעיה שלי שהערך של התא באופן אוטומטי כערך התאריך, מה שאני צריך לעשות הוא סיכום שכל ערך שנמצא בתא באופן אוטומטי נחשב ל 1 -
@odeddvir אמר בתוכנה לסימון חזרות:
@פלורידה תשתמש ב CountIF:
=COUNTIF(E1:E10,ChrW(&H2713))
אצלי זה לא עוזר, כי במקום
ChrW(&H2713)
שמתיDate
מה שגורר שבתאים מוגדר11/11/2020
כך שאני כן זקוק להגיע לפונקצייה של ספירה@פלורידה אז תשתמש פשוט ב CountA:
COUNTA(E1:E10)
תוספת:
אם אתה משתמש רק בתאריכים, אתה יכול להשתמש גם ב-Count הרגילה, ההבדל הוא ש-CountA תספור גם טקסט, ערכים לוגיים כמו True/False, ואפילו שגיאות ושאר מרעין בישין, בעוד ש Count תספור רק תאים עם ערך מספרי (כולל תאריכים) -
@פלורידה אמר בתוכנה לסימון חזרות:
אך לא נותן ערך לתא.
זה לא מדויק. למעשה הוא נותן ערך לתא, התא מכיל את התו
ChrW(&H2713)
.@פלורידה אמר בתוכנה לסימון חזרות:
אולי ניתן ליצור נוסחה v=1????
לא. אבל אפשר לסכם לפי תנאי, אם התא ריק אז להוסיף 0, ואם יש בו ערך כלשהוא (או ליתר דיוק את התו הנ"ל) להוסיף 1.
ואפשר גם להכניס בפועל את הערך True/False ולהשתמש בעיצוב מתנה כדי להציג V. -
-
@פלורידה פתח את האפליקציה "מפת תוים":
בחר את הפונט הרצוי ואת התו, ולמטה יופיע הקוד שלו:
שים לב שהקוד מופיע בקידוד HEX, אבל שיטת הסימון בVBA וממילא גם באקסל היא מעט שונה.
פשוט תחליף את הקידומת0x
לקידומתH&
. למשל במקום0xFC
תכתובHFC&
-
האם יש דרך לעשות בכיוון ההפוך?
לי יש את תו ה"חיפוש"
יצרתי אותו דרך אימוג'י, והוא נמצא לי בתוך הגליון אבל אין לי מידע איך אקסל מגדיר אותו (כדי להשתמש בו בתוך VBA)
-
@פלורידה פתח את האפליקציה "מפת תוים":
בחר את הפונט הרצוי ואת התו, ולמטה יופיע הקוד שלו:
שים לב שהקוד מופיע בקידוד HEX, אבל שיטת הסימון בVBA וממילא גם באקסל היא מעט שונה.
פשוט תחליף את הקידומת0x
לקידומתH&
. למשל במקום0xFC
תכתובHFC&
-
@odeddvir אמר בתוכנה לסימון חזרות:
פשוט תחליף את הקידומת 0x לקידומת H&. למשל במקום 0xFC תכתוב HFC&
למה משנים את הקידומת של יוניקוד
U+1F50D
-
גם כאן מחליפים שני תוים בהתחלה, דהיינו
U+1F50D
יהפוך לH1F50D&
.
עריכה: כאן לפעמים הפונקציה ChrW לא תעבוד. הסבר לקמן. -
@odeddvir
יש הבדל במילה הראשונה? או שעושים את זה כמו הקודים האחריםChrW(&H1F50D)
אני שואל את זה אחרי שבדקתי את כל הצורות שחשבתי כי הן אפשריות. והחלפתי את הקודים במקומות שהקודים המקבילים (ChrW(&H2713)
) פעלו@פלורידה אתה צודק. הקידוד של Unicode הוא UTF-32 בעוד שהקידוד של Windows 10 הוא UTF-16. הפונקציה ChrW לא תעבוד בחלק מהערכים.
לחלק מהערכים תצטרך להשתמש בפונקצית VBA המשופרת הבאה:
מקור: StackOverflowPublic Function ChrU(UCode As String) As String Dim CharCode As Long CharCode = Val("&H00" & Right(UCode, Len(UCode) - 2)) If CharCode < 0 Then CharCode = CharCode + 65536 End If Dim lngChar As Long If CharCode >= 0 Then If CharCode < &HD800& Then ChrU = ChrW$(CharCode) Exit Function ElseIf CharCode < &HDC00& Then ' UTF-16 surrogates are invalid in UTF-32 ElseIf CharCode < &HFFFF& Then ChrU = ChrW$(CharCode) Exit Function ElseIf CharCode < &H10FFFF Then lngChar = CharCode - &H10000 ChrU = ChrW$(&HD800& Or (lngChar \ 1024)) & ChrW$(&HDC00& Or (lngChar And &H3FF&)) Exit Function End If End If Err.Raise 5 End Function
תפתח את עורך ה-VBA באקסל, צור מודל חדש ותדביק שם את הקוד.
כעת תוכל להציג תווי יוניקוד כך:
-
@פלורידה אתה צודק. הקידוד של Unicode הוא UTF-32 בעוד שהקידוד של Windows 10 הוא UTF-16. הפונקציה ChrW לא תעבוד בחלק מהערכים.
לחלק מהערכים תצטרך להשתמש בפונקצית VBA המשופרת הבאה:
מקור: StackOverflowPublic Function ChrU(UCode As String) As String Dim CharCode As Long CharCode = Val("&H00" & Right(UCode, Len(UCode) - 2)) If CharCode < 0 Then CharCode = CharCode + 65536 End If Dim lngChar As Long If CharCode >= 0 Then If CharCode < &HD800& Then ChrU = ChrW$(CharCode) Exit Function ElseIf CharCode < &HDC00& Then ' UTF-16 surrogates are invalid in UTF-32 ElseIf CharCode < &HFFFF& Then ChrU = ChrW$(CharCode) Exit Function ElseIf CharCode < &H10FFFF Then lngChar = CharCode - &H10000 ChrU = ChrW$(&HD800& Or (lngChar \ 1024)) & ChrW$(&HDC00& Or (lngChar And &H3FF&)) Exit Function End If End If Err.Raise 5 End Function
תפתח את עורך ה-VBA באקסל, צור מודל חדש ותדביק שם את הקוד.
כעת תוכל להציג תווי יוניקוד כך:
@odeddvir הניסוח אינו מדויק.
UTF32, UTF16 ,UTF8 כולם Unicode, העניין הוא שChar מכיל רק 16 ביטים, רוב האפליקציות בחרו להתעלם מהעובדה הזו בעיקר משום שרוב התווים שבשימוש תדיר משתתפים בBasic Multilingual Plane (או בקיצור BMP) שדורש 16 ביטים בלבד.
BMP מכסה את כל השפות המודרניות ומכיל יותר מ30,000 אלף תווים בסינית.