「A1」セルに値を書き込もうとしていますが、次のエラーが表示されます。
アプリケーション定義またはオブジェクト定義のエラー「1004」
私はネット上で多くのソリューションを試しましたが、どれも機能していません。 Excel 2007を使用していますが、ファイルの拡張子は.xlsmです。
私のコードは次のとおりです。
Sub varchanger()
On Error GoTo Whoa
Dim TxtRng As Range
Worksheets("Game").Activate
ActiveSheet.Unprotect
Set TxtRng = ActiveWorkbook.Sheets("Game").Cells(1, 1)
TxtRng.Value = "SubTotal"
'Worksheets("Game").Range("A1") = "Asdf"
LetsContinue:
Exit Sub
Whoa:
MsgBox Err.number
Resume LetsContinue
End Sub
編集:警告アイコンをクリックしてエラーが表示された後、計算ステップの表示が適切に機能することを選択
私はあなたがシートの保護につまずくかもしれないと思う。コードを少し合理化し、ワークブックおよびワークシートオブジェクトへの参照を明示的に設定しています。この例では、TxtRngオブジェクトを設定するときにワークブックとシートを明示的に参照しますが、シートの保護を解除するときは参照しません。
これを試して:
_Sub varchanger()
Dim wb As Workbook
Dim ws As Worksheet
Dim TxtRng As Range
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet1")
'or ws.Unprotect Password:="yourpass"
ws.Unprotect
Set TxtRng = ws.Range("A1")
TxtRng.Value = "SubTotal"
'http://stackoverflow.com/questions/8253776/worksheet-protection-set-using-ws-protect-but-doesnt-unprotect-using-the-menu
' or ws.Protect Password:="yourpass"
ws.Protect
End Sub
_
_ws.Unprotect
_をコメントアウトしてサブルーチンを実行すると、実行時エラー1004が発生します(シートを保護し、範囲をロックしていると仮定します)。行のコメントを解除すると、コードを正常に実行できます。
ノート:
Cells(1, 1)
表記は、大きな悲嘆を引き起こす可能性があります。慎重に使用してください。 Range("A1")
は、人間が解析するのがずっと簡単で、額を間違える間違いを防ぐ傾向があります。range( "A1")= "Asdf"をRange( "A1")。value = "Asdf"に置き換えます
今晩クランベリーウォッカをいくつか食べたので、何かが足りないかもしれません...必要な範囲を設定していますか?使用しない理由:
Activeworkbook.Sheets("Game").Range("A1").value = "Subtotal"
これも失敗しますか?
同様のことを試したようです:
'Worksheets("Game").Range("A1") = "Asdf"
ただし、ワークシートはコレクションであるため、「ゲーム」を参照することはできません。代わりにSheetsオブジェクトを使用する必要があると思います。
代わりにこれを試してください
Set TxtRng = ActiveWorkbook.Sheets("Game").Range("A1")
[〜#〜] addition [〜#〜]
ファイルが破損している可能性があります-これは以前にも何度か起こりましたが、唯一の解決策はすべてを新しいファイルにコピーすることです。
以下をお試しください:
これは実行されますか?
Sub varchanger()
With Excel.Application
.ScreenUpdating = True
.Calculation = Excel.xlCalculationAutomatic
.EnableEvents = True
End With
On Error GoTo Whoa:
Dim myBook As Excel.Workbook
Dim mySheet As Excel.Worksheet
Dim Rng As Excel.Range
Set myBook = Excel.Workbooks("MyFullyQualified.xlsm")
Set mySheet = myBook.Worksheets("mySheet")
Set Rng = mySheet.Range("A1")
'ActiveSheet.Unprotect
Rng.Value = "SubTotal"
Excel.Workbooks("MyFullyQualified.xlsm").Worksheets("mySheet").Range("A1").Value = "Asdf"
LetsContinue:
Exit Sub
Whoa:
MsgBox Err.Number
GoTo LetsContinue
End Sub