829 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo
Ich bin ein Neuling in Sachen Programmieren
Meine Frage ist :
Ich möchte gerne die in Visual Express 2010 errechneten Werte in eine vorgefärtigen
Excel Tabelle einfügen (textbox.text)
ausserdem sollte das so sein wenn ich einen neuen Wert errechne soll dieser in die
nächste Zelle eingefügt werden.
Z.B
wenn A1 schon ein errechneter Wert sich befindet so soll der nächste errechnete Wert
in die nächste Zelle A2 eingefügt werden und wenn A2 belegt ist dann in A3 #

Brauche dringend Hilfe :\
Bin leider nicht so fit in diesen Sachen

1 Antwort

0 Punkte
Beantwortet von
Hallo Valentino,

Ich benutze eigentlich so gut wie nie VB Express, da sich fast ALLES auch sehr gut in VBA machen lässt. In Einzelfällen ist es aber doch mal notwendig von VB Express oder einer anderen Anwendung (z.B. Word oder Access) auf Excel zuzugreifen. In diesen Fällen sollte dir der folgende Code weiterhelfen. Bei mir funktioniert er prima.

Public Class Form1

'Benötigte Funktionen zur Suche nach Excel
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public ExcelLiefNicht As Boolean, DateiGeöffnet As Boolean
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'Wichtige Variablen
Const WM_USER = 1024
Dim hWnd As Long
Dim Exl As Object, wb As Object, sh As Object, w As Object
Dim Dateiname As String, Blattname As String, Spalte As Integer

'Hier (und nur hier!) Datei- und Blattnamen zuweisen
Dateiname = "E:\Norbert2\Daten\vbexpr5.xls"
Blattname = "Tabelle1"
Spalte = 1 '1 = Spalte A, 2 = Spalte B usw.

'Prüft ob Excel bereits läuft, wenn nicht wird es gestartet
On Error Resume Next
Exl = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
ExcelLiefNicht = True
Err.Clear()
Else
hWnd = FindWindow("XLMain", 0)
If hWnd = 0 Then
'Excel wird nicht ausgeführt
'Exit Sub
Else
'ausgeführtes Excel wird zugewiesen
SendMessage(hWnd, WM_USER + 18, 0, 0)

'Prüft ob Datei bereits geöffnet ist
For Each w In Exl.Workbooks
If w.path & "\" & w.name = Dateiname Then
wb = w
DateiGeöffnet = True
End If
Next w
End If
End If


'Öffnet Excel wenn noch geschlossen
If ExcelLiefNicht = True Then
Exl = CreateObject("Excel.Application")
End If
Exl.visible = True
Exl.screenupdating = True


'Öffnet Datei wenn noch geschlossen
If DateiGeöffnet = False Then
wb = Exl.Workbooks.Open(Filename:=Dateiname)
End If
wb.visible = True

'Weist der Variablen sh das gewüschte Tabellenblatt zu
sh = wb.sheets(Blattname)


'ab hier dein Code z.B.
sh.cells(sh.rows.count, Spalte).end(-4162).offset(1, 0).value = TextBox1.Text
sh.calculate()
wb.save()
'dein Code nur bis hier danach wird ExcelZuweisung gelöscht.


'Abschlussarbeiten
sh = Nothing

If DateiGeöffnet = False Then
wb.close() 'Schließt die Excel-Datei wenn sie zu Beginn geschlossen war.
End If
wb = Nothing

If ExcelLiefNicht = True Then
Exl.quit() 'Schließt Excel wenn es zu Beginn geschlossen war.
End If
Exl = Nothing

'End 'Dieser Befehl wird benötigt um das Form nach Ende des Makros zu schließen.

End Sub


End Class

Die Namen vom Userform, TextBox und Button musst du natürlich an deine Verhältnisse anpassen.

Gruß Mr. K.
...