pisces قام بنشر يونيو 18, 2024 قام بنشر يونيو 18, 2024 السلام عليكم ورحمة الله وبركاته ارجو من اصحاب الخبرة مساعدتي في طلبي اريد عمل كود VBA لاضافة Dynamic Hyperlink بين خليتين في شيتين مختلفين تكون الصله بينهما فقط "=" من الاتجاهين كل لنك يوصلني للخلية في الشيت الاخر وبشرط ان لا يتأثر عند ادراج او مسح صفوف تفاصيل اذا كان محتوى الخلية "ُI5" في sheet1 يحتوي على "=sheet2!E17" يتم انشاء ارتباط تشعبي في الخلية "I5" عند الضغط عليه يوجهني للخلية "E17" في الشيت 2 وعند الضغط على "E17" في الشيت 2 ينقلني للخلية "I5" في الشيت 1 فقط ان كانت الخلية في شي1 تحتوي "=" عند مسح محتوى الخلية التي بها "=" يتم مسح الارتباط التشعبي وعند ادراج او مسح صف اعلى من الصفوف التي تحتوي "=" يتم تحديث الارتباطات التشعبية الموجودة حسب عناوين الخلايا الجديدة officena.xlsm
pisces قام بنشر يونيو 21, 2024 الكاتب قام بنشر يونيو 21, 2024 (معدل) السلام عليكم كنت على امل بأنني سوف القى حل لديكم او حتى رد ب لا يوجد حل لها واشكركم جميعاً على شرف المحاوله تم تعديل يونيو 21, 2024 بواسطه pisces
محمد هشام. قام بنشر يونيو 21, 2024 قام بنشر يونيو 21, 2024 39 دقائق مضت, pisces said: كنت على امل بأنني سوف القى حل لديكم او حتى رد ب لا يوجد حل لها واشكركم جميعً على شرف المحاوله صراحة لم استوعب الفكرة جيدا حاول تجربة هدا يدويا وتعديله بما يناسبك Sub InsertHyperlinks() Dim a As Range, b As Range Dim rCnt As Worksheet, xCnt As Worksheet Dim WS As Worksheet, dest As Worksheet Set WS = Sheet1: Set dest = Sheet2 On Error Resume Next WS.Activate Set a = Application.InputBox("الرجاء تحديد الخلية الأولى التي تحتوي على الارتباط التشعبي" & vbCrLf & vbCrLf & _ "NOTE: يمكن إضافة الارتباطات التشعبية فقط على النص وليس على الخلايا التي تحتوي على صيغ!" & "تحديد الارتباط التشعبي 1", Type:=8) Set rCnt = a.Worksheet dest.Activate Set b = Application.InputBox("الرجاء تحديد الخلية الثانية التي تحتوي على ارتباط تشعبي" & "تحديد الارتباط التشعبي 2", Type:=8) Set xCnt = b.Worksheet WS.Hyperlinks.Add Anchor:=a, Address:="", SubAddress:= _ "'" & xCnt.Name & "'" & "!" & b.Address, TextToDisplay:=CStr(b.Value) dest.Hyperlinks.Add Anchor:=b, Address:="", SubAddress:= _ "'" & rCnt.Name & "'" & "!" & a.Address, TextToDisplay:=CStr(b.Value) End Sub 1
pisces قام بنشر يونيو 21, 2024 الكاتب قام بنشر يونيو 21, 2024 اشكرك اخي العزيز محمد اعذرني فأنا لست ضليع بالاكواد ولكن احاول الحصول على مبتغاي لايمكنني وضع اللنكات بشكل يدوي لانها متغيره حسب الخلايا المرتبطة وليست هذه هي المشكله فالملف الذي ارفقته لكم يتم وضع الارتباطات فيه بشكل جيد حسب فهمي ولكن يمكنك الاطلاع عليه وتصحيحه ان كان به خلل الارتباطات توضع بشكل صحيح فيه ولكن به خللين الاول هو عند الادراج والمسح لا يتم تحديث الارتباطات حسب عدد الصفوف الدرجة او الممسوحه ويسبب ذلك خلل للنك المرتبط من الخلية المرجعية للخلية الاصلية والثاني هو عند مسح الارتباط في الشيت الاول لا يتم مسح الارتباط المقابل له في الشيت الثاني
Saleh Ahmed Rabie قام بنشر يونيو 21, 2024 قام بنشر يونيو 21, 2024 يمكنك استخدام الكود التالي في VBA لإضافة الDynamic Hyperlink بين خليتين في شيتين مختلفين: Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Dim formula As String, sheetName As String, cellAddress As String For Each cell In Target If InStr(cell.Formula, "=") > 0 Then formula = Mid(cell.Formula, InStr(cell.Formula, "=") + 1, Len(cell.Formula) - InStr(cell.Formula, "=")) If InStr(formula, "!") > 0 Then sheetName = Mid(formula, 2, InStr(formula, "!") - 2) cellAddress = Mid(formula, InStr(formula, "!") + 1, Len(formula) - InStr(formula, "!")) If Sheets(sheetName).Range(cellAddress) = "" Then cell.Hyperlinks.Add Anchor:=cell, Address:="", SubAddress:="", TextToDisplay:=cell.Value Else Sheets(sheetName).Range(cellAddress).Hyperlinks.Add Anchor:=Sheets(sheetName).Range(cellAddress), Address:="", SubAddress:="'[Book1]Sheet1'!" & cell.Address, TextToDisplay:=Sheets(sheetName).Range(cellAddress).Value End If End If End If Next cell End Sub ``` يرجى استبدال "Book1" في الكود بعنوان المصنف الخاص بك. يجب نسخ الكود ولصقه في قسم الكود للشيت الذي ترغب في تنفيذ الديناميكية الHyperlink فيه. سيقوم الكود بإضافة الDynamic Hyperlink بين الخليتين عند تحقق الشرط وسيتم تحديث الارتباطات تلقائيًا عند إجراء أية تغييرات.
pisces قام بنشر يونيو 22, 2024 الكاتب قام بنشر يونيو 22, 2024 السلام عليكم اشكرك اخي العزيز saleh ظهر لي المسج التالي Subscript out of range فضلاً وليس امراً إن كنت تستطيع تثبيتها في ملف سيكون افضل لي
Saleh Ahmed Rabie قام بنشر يونيو 22, 2024 قام بنشر يونيو 22, 2024 4 ساعات مضت, pisces said: السلام عليكم اشكرك اخي العزيز saleh ظهر لي المسج التالي Subscript out of range فضلاً وليس امراً إن كنت تستطيع تثبيتها في ملف سيكون افضل لي **تحليل الخطأ:** يحدث خطأ "Subscript out of range" عندما يحاول الكود الوصول إلى عنصر خارج نطاق المصفوفة أو المجموعة. في هذه الحالة، يبدو أن الخطأ يحدث في السطر التالي: ``` If Sheets(sheetName).Range(cellAddress) = "" Then ``` **الحل:** من المحتمل أن يكون سبب الخطأ هو أن ورقة العمل `sheetName` لا تحتوي على نطاق `cellAddress`. للتحقق من ذلك، يمكنك إضافة سطرين للتحقق من وجود ورقة العمل والنطاق قبل محاولة الوصول إليهما. **الكود المعدل:** ``` Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Dim formula As String, sheetName As String, cellAddress As String For Each cell In Target If InStr(cell.Formula, "=") > 0 Then formula = Mid(cell.Formula, InStr(cell.Formula, "=") + 1, Len(cell.Formula) - InStr(cell.Formula, "=")) If InStr(formula, "!") > 0 Then sheetName = Mid(formula, 2, InStr(formula, "!") - 2) cellAddress = Mid(formula, InStr(formula, "!") + 1, Len(formula) - InStr(formula, "!")) If Sheets(sheetName).Exists Then If Sheets(sheetName).Range(cellAddress).Exists Then If Sheets(sheetName).Range(cellAddress) = "" Then cell.Hyperlinks.Add Anchor:=cell, Address:="", SubAddress:="", TextToDisplay:=cell.Value Else Sheets(sheetName).Range(cellAddress).Hyperlinks.Add Anchor:=Sheets(sheetName).Range(cellAddress), Address:="", SubAddress:="'[Book1]Sheet1'!" & cell.Address, TextToDisplay:=Sheets(sheetName).Range(cellAddress).Value End If End If End If End If End If Next cell End Sub ``` **ملاحظة:** * تأكد من استبدال `[Book1]Sheet1` في السطر `SubAddress:="'[Book1]Sheet1'!" & cell.Address` باسم ورقة العمل الحقيقية التي تحتوي على النطاق `cellAddress`. * يمكنك أيضًا إضافة معالجة إضافية للتعامل مع الحالات الأخرى، مثل عندما تكون ورقة العمل أو النطاق محميًا أو مخفيًا.
pisces قام بنشر يونيو 22, 2024 الكاتب قام بنشر يونيو 22, 2024 السلام عليكم ظهر لي نفس الخطأ عند السطر If Sheets(sheetName).Exists Then
Saleh Ahmed Rabie قام بنشر يونيو 22, 2024 قام بنشر يونيو 22, 2024 10 دقائق مضت, pisces said: السلام عليكم ظهر لي نفس الخطأ عند السطر If Sheets(sheetName).Exists Then وعليكم السلام **ملاحظة:** من المحتمل أن يكون سبب الخطأ هو أن اسم ورقة العمل `sheetName` غير صحيح أو غير موجود في المصنف. * تأكد من استبدال `[Book1]Sheet1` في السطر `SubAddress:="'[Book1]Sheet1'!" & cell.Address` باسم ورقة العمل الحقيقية التي تحتوي على النطاق `cellAddress`. * يمكنك أيضًا إضافة معالجة إضافية للتعامل مع الحالات الأخرى، مثل عندما تكون ورقة العمل أو النطاق محميًا أو مخفيًا.
pisces قام بنشر يونيو 23, 2024 الكاتب قام بنشر يونيو 23, 2024 السلام عليكم اشكرك عزيزي على سعة صدرك لقد حاولت كثيراً ولم استطع تخطي المشكله فأنا لست ملم بال VBA هل يمكنك ضبطها على الملف واكون لك من الشاكرين officena.xlsm
pisces قام بنشر يونيو 29, 2024 الكاتب قام بنشر يونيو 29, 2024 السلام عليكم ورحمة الله وبركاته، أود أن أعبر عن خالص شكري وتقديري لجميع أعضاء منتدى أوفسينا، خاصة أعضاء قسم إكسيل. أشكر كل من خصص وقتًا لمساعدتي وأجاب على استفساراتي، وأقدر الجهد المبذول من قِبَلكم جميعًا لجعل هذا المنتدى بيئة تعليمية متميزة. واخص بالشكر الاخ محمد هشام والاخ Saleh Ahmed Rabie على محاولاتهم السابقة ( لم احصل على مبتغاي هذه المرة )
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.