2017-03-06 6 views
-1

Also, ich habe gelesen und ein wenig um zu graben, wie dieses Problem zu lösen und ich habe eine funktionierende Lösung gefunden. Ich habe versucht: -Kontrolle ich habe keine „active-Sheets/Arbeitsmappe“ Referenzen. -Checking-Methodennamen sind in Ordnung.VBA-Makro - Mit einem Klick auf die Schaltfläche Teil des Codes nicht ausgeführt

Dies ist a capture where you can see the troubling part of the code

Ich bin ein Neuling in VBA so stahl ich die Funktion von irgendwo und machte einen kleinen Kniff zu. Die Funktion (und der ganze Code) funktioniert einwandfrei, wenn ich die Play-Taste in der VBA-Konsole drücke, aber nicht, wenn ich auf die ActiveX-Taste klicke. Irgendeine Idee, wie man vorgeht? Vielen Dank im Voraus! Hier

ist der Code in der button_click():

Private Sub CommandButton1_Click() 
     Módulo1.Formatting_Number (Sheets("Hoja5").Range("AB8:AB23")) 
     Módulo1.WhereToInsertRow 
    End Sub 

Und hier ist der Code in dem Modul, die von der Taste aufgerufen wird:

Public Function LastRec(Myrng As Range, g As Integer) 
     For x = Myrng(1).Row To Myrng(Myrng.Count, 1).End(xlUp).Row 
     If Cells(x, Myrng.Column).Value = Cells(x + 1, Myrng.Column).Value Then GoTo continue 
     If Cells(x, Myrng.Column).Value = g Then 
      LastRec = x 
      Exit Function 
     End If 
    LastRec = CStr(g) & "Not FOUND" 
    continue: 
     Next x 
    End Function 
    Public Sub WhereToInsertRow() 
     Dim g As Integer 
     For g = 2 To 7 
     Sheets("Hoja5").Range("AB" & g + 6) = LastRec(Sheets("Hoja5").Range("O:O"), g) 
     Next g 
     For g = 14 To 23 
     Sheets("Hoja5").Range("AB" & g).Value = LastRec(Sheets("Hoja5").Range("O:O"), (g + 87)) 
     Next g 
    End Sub 

    Public Sub Formatting_Number(rng As Range) 
     Dim cel As Range 
     For Each cel In rng 
      cel.NumberFormat = "0" 
     Next cel 
    End Sub 

PD: Falls Sie sind neugierig, ursprüngliche Funktion zurückgegeben letzten Auftreten eines Wertes in einer Spalte beginnend mit der letzten Zelle, ich zwickte es so jetzt beginnt es von der ersten Zelle.

+1

Bitte können Sie hier Ihren Code anstelle eines Screenshots posten? – SJR

+0

Leider .. Ich habe den Code jetzt – Sourcerer

+0

Legen Sie einen Haltepunkt in der ersten Zeile Ihres CommanButton1_click Sub hinzugefügt und prüfen, ob der Sub genannt wird. Sie können dann auf F8 klicken, um dem Prozess zu folgen, um zu sehen, wo er zusammenbricht. – CLR

Antwort

1

Man könnte es anziehen so hoch. Besser noch andere Parameter wie Bereiche und/oder Blätter angeben.

Public Function LastRec(Myrng As Range, g As Integer) 
    Dim x As Long, rFind As Range 

    With Myrng 
     Set rFind = .Find(What:=g, After:=.Cells(.Count), Lookat:=xlWhole, _ 
          SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 
     If Not rFind Is Nothing Then 
      LastRec = rFind.Row 
     Else 
      LastRec = g & " not FOUND" 
     End If 
    End With 

End Function 

Public Sub WhereToInsertRow() 
    Dim g As Integer, r As Range 

    With Sheets("Hoja5") 
     Set r = .Range("O1", .Range("O" & Rows.Count).End(xlUp)) 
    End With 

    For g = 2 To 7 
     Sheets("Hoja5").Range("AB" & g + 6) = LastRec(r, g) 
    Next g 
    For g = 14 To 23 
     Sheets("Hoja5").Range("AB" & g).Value = LastRec(r, g + 87) 
    Next g 
End Sub 

Public Sub Formatting_Number(rng As Range) 
    rng.NumberFormat = "0" 
End Sub 

Sub x() 
    Module1.Formatting_Number Sheets("Hoja5").Range("A8:A23") 
    Module1.WhereToInsertRow 
End Sub 
1
Private Sub CommandButton1_Click() 
    Módulo1.Formatting_Number (Sheets("Hoja5").Range("AB8:AB23")) 
    Módulo1.WhereToInsertRow 
End Sub 


Public Function LastRec(Myrng As Range, g As Integer) 
    . 
    . 
    . 
End Function 

Ihre LastRec Funktion erfordert zwei Parameter, von denen keines ist optional. Sie sind vorbei nur 1.

Es gibt wahrscheinlich andere Probleme, aber das ist ein Starter.

Auch ändern

Módulo1.Formatting_Number (Sheets("Hoja5").Range("AB8:AB23")) 

zu

Módulo1.Formatting_Number Sheets("Hoja5").Range("AB8:AB23") 

Sie wollen nicht, dass die äußere Paar Pars(), dass verwirren Ihnen.

+0

Ich werde diese Änderung machen, danke! In Bezug auf LastRec wird es innerhalb WhereToInsertRow() sub aufgerufen, und hat zwei Parameter. Mein Fehler für nicht klar genug zu schreiben .. Problem trotzdem gelöst, es war dieser Bereich in LastRec ohne richtige Referenzen .. – Sourcerer

Verwandte Themen