إنشاء لعبة كلمات داخل Excel لم يعد فكرة تقنية معقدة، بل أصبح مشروعًا بسيطًا يعتمد على دوال منطقية وأدوات التنسيق وديناميكية الجداول. يجمع Excel بين معالجة النصوص، التحكم بالمدخلات، وربط النتائج بقواعد شرطية تتيح تصميم تجربة تفاعلية تشبه الألعاب المنتشرة على الإنترنت. يمكن للمستخدم بناء لوحة لعب، تحديد الإجابات، إضافة رسائل فوز أو خطأ، وجعل كل خطوة تعتمد على صيغ ذكية تعمل تلقائيًا. هذا الأسلوب يمنح Excel قدرة أكبر من الجداول التقليدية، ويحوّله إلى منصة صغيرة لصناعة ألعاب نصيّة تفاعلية تجذب المتعلمين والمستخدمين الباحثين عن أساليب جديدة للإبداع والاختبار.

أحب استخدام Excel لأغراض خارج نطاق المحاسبة المملة. إنشاء نسخة طبق الأصل من Wordle تعمل بكامل طاقتها، وقابلة لإعادة الاستخدام والمشاركة، هو أحد هذه الأمور. علاوة على ذلك، إنها طريقة ممتعة وفريدة لإتقان أدوات Excel الأساسية.
تستخدم هذه الطريقة وحدات ماكرو VBA.
تستخدم الخطوة الرئيسية في هذا الدليل وحدات ماكرو VBA للتعامل مع تسلسل تخمين Wordle المعقد ومنطق التسجيل. يضمن هذا للاعب تجربةً أكثر موثوقية، حيث لا يتطلب منه تغيير أي من إعدادات Excel الأساسية. مع ذلك، لا تقلق إذا كنت لا تعرف كيفية كتابة شيفرة VBA، فيمكنك ببساطة نسخ ولصق شيفرتي!
عندما يفتح اللاعب الملف المُفعّل فيه وحدات الماكرو، سيظهر شريط تحذير أمني أعلى شاشة Excel. عند هذه النقطة، يجب عليه النقر على “تمكين المحتوى” لكي تعمل اللعبة كما هو متوقع. إذا لم يفعل، فستبقى اللوحة ثابتة ولن تُسجّل تخميناته.
يجب عليك أنت واللاعبون الذين سيحصلون على نسخة من لعبتك استخدام إصدار سطح المكتب من Microsoft Excel.
الخطوة 1: حفظ الملف المُفعّل بوحدات الماكرو
تُهيئ هذه الخطوة مُصنّف عملك لـ VBA. افتح مُصنّف Excel جديد، ثم انقر على “ملف” > “حفظ باسم” > “استعراض”.

اختر موقعًا لملفك، وفي حقل “حفظ باسم النوع”، حدد “مصنف Excel مُمكّن بوحدات الماكرو”. ثم، سمِّ الملف، وانقر على “حفظ“.

الخطوة 2: إعداد القاموس واللوحة
بعد ذلك، عليك إنشاء قاموس للكلمات الصحيحة وإنشاء لوحة لعبة Wordle.
أضف ورقة عمل جديدة (“+”)، وانقر نقرًا مزدوجًا فوق علامة تبويب الورقة الجديدة لإعادة تسميتها إلى WordList. اضغط على Enter للتأكيد.

ابحث عن قائمة كلمات من خمسة أحرف، وانسخ جميع الكلمات، ثم ألصقها (باستخدام Ctrl+Shift+V) في الخلية A1 من ورقة قائمة الكلمات. ثم ابحث عن الكلمات المكررة واحذفها تمامًا بتحديد العمود A والنقر على “إزالة الكلمات المكررة” في علامة تبويب “البيانات”.

بعد ذلك، ارجع إلى ورقة عمل اللعبة (Sheet1)، وحدد جميع الخلايا (Ctrl+A)، وقم بتغيير عرض الخلايا إلى 65 بكسل عن طريق النقر فوق الحد الفاصل بين عنواني العمود وسحبه.

كرر هذه العملية للصفوف لجعل جميع الخلايا مربعة.
الآن، أدخل كلمة سرية من خمسة أحرف في الخلية A1 بأحرف كبيرة. ثم حدد الخلايا من B3 إلى F8، وغيّر حجم الخط إلى 36 نقطة، وقم بمحاذاة النص عموديًا وأفقيًا من خلال علامة التبويب “الصفحة الرئيسية”. وأخيرًا، أضف إطارًا خارجيًا.

اضغط على Ctrl+S لحفظ الملف.
الخطوة 3: إنشاء آليات اللعبة
الماكرو هو جوهر اللعبة، فهو يتحكم تلقائيًا بجميع عمليات التسجيل والألوان ومنطق الحروف.
انقر بزر الماوس الأيمن على علامة التبويب “الورقة 1” ثم انقر على “عرض الكود”.

في نافذة محرر VBA، انقر نقرًا مزدوجًا فوق “Sheet1 (Sheet1)” ضمن كائنات Microsoft Excel، ثم انسخ وألصق الكود أدناه في منطقة الوحدة الفارغة إلى اليمين.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim GuessRow As Long
Dim SecretWord As String
‘ Only run if the changed cell is the F-column (the fifth letter of a guess)
If Not Intersect(Target, Me.Range(“F3:F8”)) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
‘ CRITICAL: Unprotect the sheet to allow the macro to change colors and lock status
If Me.ProtectContents Then Me.Unprotect “YOUR_PASSWORD”
GuessRow = Target.Row
‘ 1. Get Secret Word and Guess
SecretWord = UCase(Me.Range(“A1”).Value)
‘ Concatenate the 5 cells into a single string
Dim InputWord As String
Dim j As Long
For j = 2 To 6 ‘ Loop through columns B to F
InputWord = InputWord & Me.Cells(GuessRow, j).Value
Next j
Dim GuessWord As String
GuessWord = UCase(InputWord)
‘ 2. Check if valid word (using COUNTIF trick)
Dim WordCount As Long
WordCount = Application.WorksheetFunction.CountIf( _
Sheets(“WordList”).Range(“A:A”), GuessWord)
If WordCount = 0 Then
‘ Handle invalid word (Not in word list)
MsgBox “Not in word list! Please try again.”, vbExclamation
Me.Range(“B” & GuessRow & “:F” & GuessRow).ClearContents
Else
‘ NEW CHECK: Check for duplicate entry
Dim r As Long
Dim DuplicateFound As Boolean
DuplicateFound = False
‘ Loop through all *previous* guess rows (from row 3 up to the current row – 1)
For r = 3 To GuessRow – 1
‘ Concatenate the word from the previous row for comparison
Dim PreviousWord As String
Dim k As Long
For k = 2 To 6 ‘ Columns B to F
PreviousWord = PreviousWord & Me.Cells(r, k).Value
Next k
‘ Compare the uppercase current guess (GuessWord) with the previous guess
If GuessWord = UCase(PreviousWord) Then
DuplicateFound = True
Exit For
End If
PreviousWord = “” ‘ Reset for the next loop iteration
Next r
If DuplicateFound Then
MsgBox “You already guessed that word! Please try again.”, vbExclamation
Me.Range(“B” & GuessRow & “:F” & GuessRow).ClearContents
‘ Restore settings and exit sub after duplicate is cleared
Application.EnableEvents = True
Application.ScreenUpdating = True
Me.Protect “YOUR_PASSWORD”
Exit Sub
End If
‘ 3. Core Wordle Scoring Logic (Sets the cell colors directly)
Dim i As Long
Dim Letter As String
Dim ClaimedLetters As String
ClaimedLetters = SecretWord ‘ Start with all letters available
‘ Pass 1: Check for GREEN (Correct Position)
For i = 1 To 5 ‘ Columns 2 (B) to 6 (F)
‘ FIX: Convert cell content to uppercase for scoring comparison
Letter = UCase(Me.Cells(GuessRow, i + 1).Value)
If Mid(SecretWord, i, 1) = Letter Then
Me.Cells(GuessRow, i + 1).Interior.Color = RGB(106, 170, 100) ‘ Green
Mid(ClaimedLetters, i, 1) = “#” ‘ Use placeholder to claim the letter
End If
Next i
‘ Pass 2: Check for YELLOW/GRAY
For i = 1 To 5
‘ FIX: Convert cell content to uppercase for scoring comparison
Letter = UCase(Me.Cells(GuessRow, i + 1).Value)
‘ Only score if not already colored GREEN
If Me.Cells(GuessRow, i + 1).Interior.Color <> RGB(106, 170, 100) Then
‘ Search the remaining (non-Green) available letters
If InStr(1, ClaimedLetters, Letter) > 0 Then
Me.Cells(GuessRow, i + 1).Interior.Color = RGB(201, 180, 88) ‘ Yellow
‘ Claim this yellow letter instance
Mid(ClaimedLetters, InStr(1, ClaimedLetters, Letter), 1) = “#”
Else
Me.Cells(GuessRow, i + 1).Interior.Color = RGB(120, 124, 126) ‘ Gray
End If
End If
Next i
‘ 4. Check for Win/Loss (Win check is done via color)
Dim isWin As Boolean
isWin = True
For i = 2 To 6
If Me.Cells(GuessRow, i).Interior.Color <> RGB(106, 170, 100) Then
isWin = False
Exit For
End If
Next i
If isWin Then
Me.Range(“B2”).Value = “YOU WIN!”
‘ FIX: Loss condition added for the final row (Row 8)
ElseIf GuessRow = 8 Then
Me.Range(“B2”).Value = “Better luck next time. The word was ” & SecretWord
End If
‘ 5. LOCK THE CURRENT ROW and UNLOCK THE NEXT ROW for sequential play
Me.Range(“B” & GuessRow & “:F” & GuessRow).Locked = True ‘ Lock the row just completed
‘ Only unlock the next row if the game isn’t won and there are more rows
If Not isWin And GuessRow < 8 Then
Me.Range(“B” & (GuessRow + 1) & “:F” & (GuessRow + 1)).Locked = False ‘ Unlock the next row
End If
End If
Me.Protect “YOUR_PASSWORD” ‘ Re-protect the sheet using the password you set
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
‘ If the sheet was already protected, this ensures it gets protected again even if the IF block above was skipped.
If Not Me.ProtectContents Then Me.Protect “YOUR_PASSWORD”
End Sub
الآن، مع استمرار فتح نافذة VBA، اضغط على Ctrl+H لفتح نافذة الاستبدال. في حقل “البحث عن”، اكتب YOUR_PASSWORD، وفي حقل “استبدال بـ”، اكتب كلمة مرور ستستخدمها لاحقًا لتأمين ورقة العمل. دوّن هذا! ثم انقر على “استبدال الكل”، وسترى كلمة المرور قد استُبدلت أربع مرات.

أغلق نافذة الاستبدال.
بما أن السطر الأول من الكود يحتوي على مُعالِج أحداث يُفعَّل تلقائيًا عند تعديل أي خلايا، يجب عليك تعطيله مؤقتًا حتى تنتهي من إعداد جدول البيانات. للقيام بذلك، مع استمرار فتح نافذة VBA، انقر على “عرض” في الشريط، ثم اختر “نافذة فورية”.

بعد ذلك، انسخ وألصق ما يلي في النافذة الفورية، واضغط على Enter:
Application.EnableEvents = False


