2016-05-11 18 views
0
Set tablesheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ActiveSheet.Index)) 
KodoveJmeno = ThisWorkbook.VBProject.VBComponents(tablesheet.CodeName).Properties("Codename") 
ThisWorkbook.VBProject.VBComponents(KodoveJmeno).CodeModule.AddFromString _ "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)" + Chr(10) _ + "Application.ScreenUpdating = False" + Chr(10) _ + "Call Trideni.Serad(Target, ActiveCell.ListObject.Name)" + Chr(10) _ + "Application.ScreenUpdating = True" + Chr(10) _ + "End Sub" 
erworben

Der zweite Befehl stoppt mit:VBA Excel Codename nicht manchmal

Laufzeitfehler '9': Index Bereich von out

aber nach F5 geht es ohne Probleme - Sieht aus wie BUG seit vielen Jahren (Office 2003-2016) !! Irgendeine Lösung dafür?

Manchmal funktioniert es - nachdem ich das Blatt gelöscht habe, öffne und schließe VBA mit Alt + F11, aber manchmal ist es kaputt und VERY ANOYING die ganze Zeit, zerstört produktive Arbeit.

Auf einigen Computern ist alles in Ordnung, auf einigen Computern bekommen wir Fehler. Sieht aus wie ein Problem der internen Excel-Prozeduren mit VBA-Kommunikation oder etwas in der Art synchronisieren (Schlaf, Warten oder alt + f11 in VBA nicht funktionieren).

Thx für die Hilfe

+0

Was möchten Sie tun? – gizlmo

+0

zum Sortieren bei Doppelklick –

+1

Ich würde ein verstecktes Arbeitsblatt zu Ihrer Arbeitsmappe hinzufügen, die den richtigen Code enthält und dieses Blatt kopieren. Verwenden Sie alternativ das Workbook_SheetBeforeDoubleClick-Ereignis in ThisWorkbook. – jkpieterse

Antwort

0

Als @jkpieterse vorgeschlagen - ein verstecktes Arbeitsblatt verwenden.

Erstellen Sie eine Vorlage und geben Sie ihr einen Codenamen shtTemplate.
Fügen Sie diesen Code auf das Blatt (NB die Auswahl Schlüsselbereich wahrscheinlich besser sein könnte):

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    With ActiveSheet 
     .Sort.SortFields.Clear 
     .Sort.SortFields.Add Key:= _ 
      Range(Selection.CurrentRegion.Offset(, Selection.Column - Selection.CurrentRegion.Resize(, 1).Column).Resize(, 1).Address) _ 
      , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
     With .Sort 
      .SetRange Range(Selection.CurrentRegion.Address) 
      .Header = xlYes 
      .MatchCase = False 
      .Orientation = xlTopToBottom 
      .SortMethod = xlPinYin 
      .Apply 
     End With 
    End With 
End Sub 

ein normales Code-Modul hinzufügen und diesen Code hinzu:

Public Sub CreateSheet() 

    Dim wrkSht As Worksheet 

    shtTemplate.Visible = xlSheetVisible 
    shtTemplate.Copy ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 
    Set wrkSht = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 
    shtTemplate.Visible = xlSheetVeryHidden 'Hide the template sheet so only VBA can unhide it. 

    wrkSht.Name = "Copied Sheet" 

End Sub 

Sie werden hinzufügen müssen etwas, um dem neuen Blatt den richtigen eindeutigen Namen zu geben. Die Sortierung nach Doppelklick funktioniert auf jedem Blatt, das Sie erstellen.

+0

Thx, das sieht wie eine Lösung/Abhilfe des Fehlers aus, wir werden das verwenden. Ist dieser Bug wirklich ein Fehler oder nur ein typisches Microsoft-Feature? –