1
VBAからVSTOに切り替えようとしていますが、範囲のサイズを変更しようとしているときに慣れていないエラーが発生しています。VSTO:Excel vb.netのサイズ変更範囲
私は、x行の数でセルの範囲を分割できるようになるはずのコードを以下に示します。
私はVSTOでプロジェクトをアドインとして作成しました。 Visual Studioのボタンを押してコードを実行すると、「COMExeptionはユーザーコードで処理されていませんでした」と表示され、最後の行がハイライトされ、範囲のサイズを変更して出力しようとしています。
私は間違っていますか?
オブジェクトにあなたの出力配列を宣言する必要がありますPrivate Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click
Dim sheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet
Dim inputrange As Excel.Range
'Dim cell As Excel.Range
Dim numberOfOutputRows As Long
Dim numberOfOutPutColumns As Long
Dim outputRange As Excel.Range
Dim inputArray(0, 0) As Long
Dim i As Long
Dim iRow As Long
Dim iCol As Long
Dim numberOfCells As Long
Dim arrayInputValue As Excel.Range
Dim val As Object
inputrange = CType(sheet.Application.InputBox("select range",,,,,,, Type:=8), Excel.Range)
'Dim myRange As Excel.Range
numberOfOutputRows = InputBox("You have " & inputrange.Count & " cells. Enter the number of rows you want to split up in")
numberOfOutPutColumns = inputrange.Cells.Count/numberOfOutputRows
outputRange = CType(sheet.Application.InputBox("Output to single cell",,,,,,, Type:=8), Excel.Range)
inputrange = inputrange.Columns(1)
ReDim inputArray(0 To numberOfOutputRows, 0 To numberOfOutPutColumns + 1)
numberOfCells = inputrange.Cells.Count - 1
For i = 0 To numberOfCells
arrayInputValue = CType(inputrange.Cells(i + 1), Excel.Range)
val = arrayInputValue.value()
iRow = i Mod numberOfOutputRows
iCol = Int(i/numberOfOutputRows)
inputArray(iRow + 1, iCol + 1) = val ' arrayInputValue
Next i
outputRange.Resize(RowSize:=UBound(inputArray, 1), ColumnSize:=UBound(inputArray, 2)).Value = inputArray
ありがとうございます。私はinputArrayに値をいくつか入れてしまったので、他にもいくつかの問題があるように思えます。 – Jmorte13
VBAで動作するのと同じ方法で動作するはずです。あなたはVBAで試しましたか? Visual Studioでコードをデバッグして、配列に正確に何が書き込まれるかを確認できます。 私はホーンにしようとはしませんでした。あなたがそれを理解することができず、私があなたを助けようとしたら教えてください。 – PetLahev
私はVBAで試してみました。私は少し厳しい修正があります。私はdebuggen Visual Studioに精通していません。どうしたのですか?ここにVBAコードを貼り付けますが、十分な文字がありません。 – Jmorte13