मैं सोच रहा था कि क्या एक्सेल में कोई विकल्प है जो आपको पहली शीट में हाइपरलिंक बनाने की सुविधा देता है (चलिए इसे मुख्य शीट कहते हैं) किसी भी अन्य शीट को बनाने के बाद। इसलिए एक बार जब मैं एक नई शीट बनाता हूं तो उसका हाइपरलिंक मुख्य शीट में दिखाई देता है।

0
Blazej Kowalski 27 सितंबर 2018, 16:14

2 जवाब

सबसे बढ़िया उत्तर

वर्कशीट मेनू बनाएं

Option Explicit
Sub WsMenu()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Description
  'Writes a list of hyperlinks and various other properties of all sheets in a
  'workbook to a specified worksheet which is not included in the list.
'Preconditions
  'There has to be a worksheet called cStrName in the workbook, which will
  'become the 'Menu' or what ever you wanna call it.
'Arguments as constants
  'cStrName
    'Name of the 'Menu' worksheet.
  'cStrAddress
    'The address on each sheet where the hyperlink will jump to.
  'clRoff
    'If you don't want to start the list in the first row.
  'ciCoff
    'If you don't want to start the list in column "A".

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  Const cStrName As String = "Menu"
  Const cStrAddress As String = "A1"
  Const clROff As Long = 0 'Row Offset
  Const ciCOff As Integer = 0 'Column Offset

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  Dim oWb As Workbook
  Dim oWs As Worksheet
  Dim oWsMenu As Worksheet
  Dim iSheets As Integer
  Dim strName As String

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  Set oWb = ThisWorkbook
  Set oWsMenu = oWb.Worksheets(cStrName)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  With oWsMenu
    'Header
    'Clear the previous data (includes the formatting), or rather use
    'ClearContents to preserve the formatting.
    .Cells.Clear

    .Cells(1 + clROff, 1 + ciCOff) = "RID" 'RecordId
    .Cells(1 + clROff, 2 + ciCOff) = "Name"
    .Cells(1 + clROff, 3 + ciCOff) = "CodeName"
    .Cells(1 + clROff, 4 + ciCOff) = "Index" 'The postion of the oWs in oWb
    .Cells(1 + clROff, 5 + ciCOff) = "H" 'Number of Hyperlinks in oWs
    .Cells(1 + clROff, 6 + ciCOff) = "Used Range"

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Calculate and write to 'Menu'
    For Each oWs In oWb.Worksheets

      'You don't want the "Menu" worksheet to appear in the list.
      If oWs.Name <> cStrName Then

        iSheets = iSheets + 1
        .Cells(iSheets + clROff + 1, 1 + ciCOff) = iSheets

        'The Hyperlink
        .Cells(iSheets + clROff + 1, 2 + ciCOff).Hyperlinks.Add _
          Anchor:=.Cells(iSheets + clROff + 1, 2 + ciCOff), _
          Address:="", _
          SubAddress:="'" & oWs.Name & "'!" & cStrAddress, _
          TextToDisplay:=oWs.Name
        'Notice the single quotes (') in the SubAddress.

        .Cells(iSheets + clROff + 1, 3 + ciCOff) = oWs.CodeName
        .Cells(iSheets + clROff + 1, 4 + ciCOff) = oWs.Index
        .Cells(iSheets + clROff + 1, 5 + ciCOff) = oWs.Hyperlinks.Count
        .Cells(iSheets + clROff + 1, 6 + ciCOff) = oWs.UsedRange.Address
      End If
    Next

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'This is a work around, a lousy one.
    If .Name <> ActiveSheet.Name Then
      .Activate
    End If

    'The following line does a 1004 without the previous 3 lines, only when
    'calling the program from a sheet different then 'Menu'. I have no idea why!?

    'Apply some additional formatting.
    With .Range(Cells(1 + clROff, 1 + ciCOff), Cells(1 + clROff, 6 + ciCOff))
      .AutoFilter
      .Columns.AutoFit
    End With

  End With
End Sub

इसके अतिरिक्त शीट ईवेंट पर जाएं और इसे जोड़ें:

Private Sub Worksheet_Activate()
  WsMenu
End Sub
1
VBasic2008 3 अक्टूबर 2018, 23:07
  • उस सेल पर राइट क्लिक करें जहाँ आप लिंक चाहते हैं और फिर Link पर क्लिक करें।

  • इससे हाइपरलिंक सम्मिलित करें संवाद खुल जाएगा।

  • बाईं ओर, Place in this document पर क्लिक करें।

  • वर्कशीट चुनें और सेल का नाम दर्ज करें।

img

आप इसे Hyperlinks.Add विधि.

आप कार्यपुस्तिका मॉड्यूल के NewSheet ईवेंट के साथ नई कार्यपत्रकों में/से लिंक स्वचालित रूप से जोड़ सकते हैं।

ऑनलाइन प्रकाशित पुस्तकों सहित बाहरी कार्यपुस्तिकाओं में लिंक जोड़ना भी संभव है।


यहां उस कोड का एक मोटा उदाहरण दिया गया है जिसका उपयोग आप "मुख्य" वर्कशीट पर हर बार एक नई वर्कशीट बनाने के लिए लिंक बनाने के लिए कर सकते हैं:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim shtName As String, ws As Worksheet, rg As Range
    shtName = InputBox("Enter name for new worksheet:")
    Sh.Name = shtName
    Set ws = Sheets("main")
    Set rg = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    rg = shtName
    ws.Hyperlinks.Add rg, "", shtName & "!A1", , shtName
End Sub

अधिक जानकारी:

1
ashleedawg 27 सितंबर 2018, 17:03