2017-02-11 9 views
0

以下のコードが正常に動作していますが、ファイルを閉じるときにエラーコードがあります。 問題は、C24の後の列「C」の次の空のセルを検索するロジックにあります。ファイルを閉じて今の誤差についてはファイルを閉じるときのエラー

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 

です:あなたが見ることができるように

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

、私が試してみました: は

ラインで「変数またはWithブロック変数が設定されていないオブジェクト」また、オプションを使用する前に:

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

これも機能しましたが、以下のエラーがありましたファイルを閉じるときに: "RangeクラスのSpecialCellsプロパティを取得できません"

どのようにすればいいですか?

よろしく、

ブライアン

+2

あなたはどのようなファイルをクローズしていますか? – user3598756

+0

for eachループはうまく動作します。 'sheet1'と' sheet2'をWorksheets( "Sheet1")とWorksheets( "Sheet2")に置き換えるか、最初に定義する必要があります。 –

+0

このコードを持つExcelファイルを閉じるときにエラーが発生します。今私はシート1からワークシート( "Sheet1")にコードを変更しましたが、私はまだドキュメントが閉じると同じエラーが発生しています。初期コードが更新されました。エラー: "オブジェクト変数またはブロック変数が設定されていません" – Brian

答えて

0
  • ワークシート(「シート1」)に変更し、シート1 - あなたは現在、それが定義されていないとして、上部のコンボボックスのアイテムは、まだシート1
  • Dim ws1 as worksheetを示しました。
  • Dim nextfree as long数字であるから
  • 他にもう1つ。以下の下であなたのコードを変更します。

    バリアント、バリアントとしてTVAとして暗いTotalHT、ネットとしてバリアント

    ワークシート( "Feuil1を")細胞(NextFree + 1、8).Formula =「= SUM( H25:H」& NextFree & ")" TotalHT =ワークシート( "Feuil1 Feuil1 ")細胞(NextFree + 2、8)")細胞(NextFree + 1,8).Valueの

    ワークシート(。"。計算式= "= H" &次の"* 0.2" "" セル(NextFree + 2,8)。値

    枚の

    ワークシート( "Feuil1")細胞(NextFree + 3,8).Formula = "= H" & NextFree + 1 & "+ H" & NextFree + 2 ネット=ワークシート( "Feuil1")細胞(NextFree + 3、8).Valueの

は、以下の完全なコードを試してみてください。

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 
関連する問題