2016-03-19 24 views
1

Ben VSTO için VBA geçiş çalışıyorum, aralık ama ben bir dizi yeniden boyutlandırmak çalışıyorum ne zaman aşina değilim bazı hatalar karşılaşıyorum.VSTO: Excel yeniden boyutlandırma vb.net

Ben satırların x sayıda hücre aralığı bölmek edememek sona gereken aşağıdaki kodu var.

Ben bir eklenti olarak VSTO projeyi oluşturduk. Excel Visual Studo'da düğmeye basarak kodu çalıştırdığımda bana bir "COMExeption kullanıcı kodu tarafından işlenmedi" verir ve son satırı, satırları yeniden boyutlandırmaya ve çıktılamaya çalıştığım yere verir.

Neyi yanlış yapıyorum? Sen sahip olacak

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 

cevap

0

yerine vsto/okur nesne olarak hücrelere/veri yazar

Dim inputArray(0, 0) As Object 

Long

ait Nesne için çıkış diziyi bildirmek.

+0

Teşekkür ederiz. Girdiye doldurulan bazı değerleri kaybettiğimden başka bazı sorunlarım var gibi görünüyor - Bu konuda yardımcı olabilir misiniz? – Jmorte13

+0

VBA'da çalıştığı şekilde çalışmalıdır. VBA'da denediniz mi (biraz değişiklikle)? Kodunuzu Visual Studio'da ayıklayabileceğinizi ve dizinizde tam olarak ne yazılacağını görebileceğinizi biliyorsunuz, değil mi? Bunu bilemiyorum bana bildirin, hones olmasını deneyin vermedi ve seni VBA denedim – PetLahev

+0

yardımcı olmayı deneyelim ve mükemmel çalışır. Bazı hafif değişikliklerim var. Ben debugen Visual studio ile aşina değilim, bu nasıl yapılır? VBA kodunu buraya yapıştırırım ama yeterli karakterim yok. – Jmorte13

İlgili konular