2

「A1」に「ABC」というテキストを挿入し、「B1」の次のセルにifステートメントを挿入したいと思います。ただし、最初のエントリ「ABC」のみが挿入され、次にエラーが発生しFormulaR1C2 "Object doesn't support this property or method"ます。R1C2正しく使用しているかわかりません。私はそれが行1列2の略であると想定していましたが、誰かが私を助けてくれますか。

Dim Excel_App  As Object
Dim strExcel As String
Set Excel_App = CreateObject("Excel.Application")
Excel_App.Visible = True
Excel_App.Workbooks.Add
With Excel_App
 .Range("A:B").EntireRow.ColumnWidth = 25
 .Range("A2").EntireRow.Font.FontStyle = "Bold"
 .ActiveCell.FormulaR1C1 = "ABC"
  strExcel = "=IF(A1 = """"," & """EMPTY""" & "," & """FILLED""" & ") "
 .ActiveCell.FormulaR1C2 = strExcel
End With 
4

2 に答える 2

6

FormulaR1C1数式の書き方です。

FormulaのようなA1で式を書くことを指し=B1+C1ます。

R1C1表記法を使用して同じ式を書くには、を書き=RC[1] + RC[2]ます。さらに=B2+C2、A1に書き込むには、これを記述し=R[1]C[1] + R[1]C[2]ます->これにより、数式が値を返す列と行がオフセットされていることがわかります。

コードで実行したいことは、計算方法ではなく、数式が配置される場所をオフセットするため、次のように記述する必要があります。

.ActiveCell.Offset(,1).Formula = strExcel

ActiveCell実際には、絶対に必要でない限り、完全に取り除く必要があります。

より良く、より正確に実行するために、次のようにコードを記述します。

Dim Excel_App As Object
Dim strExcel As String
Dim wkb as Object, wks as Object

Set Excel_App = CreateObject("Excel.Application")
Excel_App.Visible = True
Set wkb = Excel_App.Workbooks.Add
Set wks = wkb.Sheets(1) 'assumes you want first sheet, can modify for sheet index or name

With wks

 .Range("A:B").EntireRow.ColumnWidth = 25 
  'I think this will actually set every row to 25, is that what you want?

 .Range("A2").EntireRow.Font.FontStyle = "Bold"

 .Range("A1").Value = "ABC" 'don't need to write Value, but just to show you the property

  strExcel = "=IF(A1 = """"," & """EMPTY""" & "," & """FILLED""" & ") "

 .Range("B1").Formula = strExcel

End With 
于 2012-10-29T14:28:41.003 に答える
0

FormulaR1C1R1C1数式スタイルで表現されたセルの数式を返すプロパティです。

構文cellsを使用して参照する必要があります。Workbook.WorkSheet.Range

したがって、最初に、作業しているワークブックを指定する必要があります。この場合、ステートメントによって追加されたワークブックExcel_App.Workbooks.Addです。新しいワークブックには自動的に「Book1」のような名前が付けられ、「Sheet1」から「Sheetn」という名前のデフォルトのワークシート数が自動的に追加されます。ここで、nはデフォルトのシート数です。

したがって、その行に書き込む最終的なコードは次のとおりです。

Excel_App.Workbooks(1).Worksheets("Sheet1").Cells(1, 1) = "ABC"
Excel_App.Workbooks(1).Worksheets("Sheet1").Cells(1, 2).Formula = "=IF(A1 = """"," & """EMPTY""" & "," & """FILLED""" & ")"
于 2012-10-29T14:32:31.297 に答える