2017-02-11 2 views
0

Ich habe unter Code, der funktioniert, aber wenn ich die Datei schließe, habe ich einen Fehlercode. Problem ist in der Logik, wo ich die nächste leere Zelle in der Spalte "C" nach C24 suchen möchte.Fehler beim Schließen der Datei

Private Sub ComboBox21_Change() 
Dim NextFree As String 
Dim Comboindex As Integer 
Dim Combovalue As String 

Comboindex = Sheet1.ComboBox21.ListIndex + 1 
Combovalue = Sheet1.ComboBox21.Value 

'NextFree = Range("C24:C" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row 

Dim ws As Worksheet 
Set ws = ActiveSheet 
For Each cell In ws.Range("C24:C100") 
    If IsEmpty(cell) = True Then 
     NextFree = cell.Row 
       Exit For 
    End If 
Next cell 

If NextFree > 25 Then 
Set ws1 = ThisWorkbook.Sheets("Feuil1") 
With ws1 
    Set Rng = .Rows(NextFree - 1) 
    Rng.Copy 
    Rng.Offset(1).Insert Shift:=xlDown 
    Application.CutCopyMode = False 
    .Range("C" & NextFree & ":H" & NextFree).ClearContents 
End With 
End If 

Worksheets("Feuil1").Cells(NextFree, 3).Value = Worksheets("Feuil2").Cells(Comboindex, 1).Value 
Worksheets("Feuil1").Cells(NextFree, 5).Value = Worksheets("Feuil2").Cells(Comboindex, 2).Value 
Worksheets("Feuil1").Cells(NextFree, 6).Value = Worksheets("Feuil2").Cells(Comboindex, 3).Value 
Worksheets("Feuil1").Cells(NextFree, 8).Value = "=+F" & NextFree & "-(G" & NextFree & "*F" & NextFree & ")" 

TotalHTF = "=SUM(H25:H" & NextFree & ")" 
Worksheets("Feuil1").Cells(NextFree + 1, 8).Value = TotalHTF 
TotalHT = Worksheets("Feuil1").Cells(NextFree + 1, 8).Value 

TVAF = "=H" & NextFree + 1 & "*0.2" 
Worksheets("Feuil1").Cells(NextFree + 2, 8).Value = TVAF 
TVA = Worksheets("Feuil1").Cells(NextFree + 2, 8).Value 

NetF = "=H" & NextFree + 1 & "+H" & NextFree + 2 
Worksheets("Feuil1").Cells(NextFree + 3, 8).Value = NetF 
Net = Worksheets("Feuil1").Cells(NextFree + 3, 8).Value 

End Sub 

Was nun Fehler beim Schließen der Datei ist: „Objektvariable oder With-Blockvariable nicht gesetzt“

In Zeile:

For Each cell In ws.Range("C24:C100") 

Wie Sie sehen können, habe ich versucht, auch vor der Verwendung der Option:

'NextFree = Range("C24:C" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row 

Dies funktioniert auch, aber hatte unter Fehler beim Schließen der Datei: "Kann die SpecialCells-Eigenschaft der Range-Klasse nicht erhalten"

Irgendwelche Ideen, wie es geht?

Grüße,

Brian

+2

welche Datei schließen Sie? – user3598756

+0

die für jede Schleife funktioniert gut. Sie müssen 'sheet1' und' sheet2' durch Arbeitsblätter ("Sheet1") und Arbeitsblätter ("Sheet2") ersetzen oder am Anfang definieren. –

+0

Fehler ist, wenn ich Excel-Datei schließen, die diesen Code hat. Jetzt habe ich den Code von Blatt1 zu Arbeitsblatt ("Sheet1") geändert, aber ich habe immer noch denselben Fehler, wenn das Dokument geschlossen ist. Anfangscode aktualisiert Fehler: "Objektvariable oder mit Blockvariable nicht gesetzt" – Brian

Antwort

0
  • ändern sheet1 zu Arbeitsblatt ("Sheet1") - Combobox Elemente an der Spitze zeigen noch sheet1
  • Dim ws1 as worksheet, wie Sie derzeit nicht definiert.
  • Dim nextfree as long wie es ist eine Nummer
  • Eine andere Sache. Ändern Sie den Code auf der Unterseite:

    Dim TotalHT As Variant, TVA As Variant, Net As Variant

    Worksheets ("Feuil1") Zellen (NextFree + 1, 8) .Formula = „= SUMME (. H25: H“& NextFree & ")" TotalHT = Arbeitsblatt ("Feuil1".) Die Zellen (NextFree + 1, 8) .Wert

    Arbeitsblatt ("Feuil1") Zellen (NextFree + 2, 8).. Formel = "= H" & NextFree + 1 & "* 0.2" "" TVA = Arbeitsblatt ("Feuil1"). Die Zellen (NextFree + 2, 8) .Wert

    0.123.

    Arbeitsblätter ("Feuil1"). Die Zellen (NextFree + 3, 8) .Formula = "= H" & NextFree + 1 & "+ H" & NextFree + 2 Net = Arbeitsblätter ("Feuil1"). Die Zellen (NextFree + 3, 8) .Value

der vollständige Code Versuchen Sie unter:

Private Sub ComboBox21_Change() 
Dim Comboindex As long, NextFree As long 
Dim Combovalue As String 
Dim TotalHT As Variant, TVA As Variant, Net As Variant 
Dim ws As Worksheet, ws1 As Worksheet 

Comboindex = Worksheets("Feuil1").ComboBox21.ListIndex + 1 
Combovalue = Worksheets("Feuil1").ComboBox21.Value 

'NextFree = Range("C24:C" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row 

Set ws = ActiveSheet 
For Each cell In ws.Range("C24:C100") 
    If IsEmpty(cell) = True Then 
     NextFree = cell.Row 
       Exit For 
    End If 
Next cell 

If NextFree > 25 Then 
Set ws1 = ThisWorkbook.Sheets("Feuil1") 
    With ws1 
     Set Rng = .Rows(NextFree - 1) 
     Rng.Copy 
     Rng.Offset(1).Insert Shift:=xlDown 
     Application.CutCopyMode = False 
     .Range("C" & NextFree & ":H" & NextFree).ClearContents 
    End With 
End If 

Worksheets("Feuil1").Cells(NextFree, 3).Value = Worksheets("Feuil2").Cells(Comboindex, 1).Value 
Worksheets("Feuil1").Cells(NextFree, 5).Value = Worksheets("Feuil2").Cells(Comboindex, 2).Value 
Worksheets("Feuil1").Cells(NextFree, 6).Value = Worksheets("Feuil2").Cells(Comboindex, 3).Value 
Worksheets("Feuil1").Cells(NextFree, 8).Formula = "=+F" & NextFree & "-(G" & NextFree & "*F" & NextFree & ")" 

Worksheets("Feuil1").Cells(NextFree + 1, 8).Formula = "=SUM(H25:H" & NextFree & ")" 
TotalHT = Worksheets("Feuil1").Cells(NextFree + 1, 8).Value 

Worksheets("Feuil1").Cells(NextFree + 2, 8).Formula = "=H" & NextFree + 1 & "*0.2""" 
TVA = Worksheets("Feuil1").Cells(NextFree + 2, 8).Value 

Worksheets("Feuil1").Cells(NextFree + 3, 8).Formula = "=H" & NextFree + 1 & "+H" & NextFree + 2 
Net = Worksheets("Feuil1").Cells(NextFree + 3, 8).Value 

End Sub 
Verwandte Themen