Suche Leute die sich mit VB/VBA auskennen 

Forum Daily Talk Suche Leute die sich mit VB/VBA auskennen  
Autor Suche Leute die sich mit VB/VBA auskennen
Partyboy02



39 Jahre
männlich
von Partyboy02 am 23.11.2006 um 12:24 Uhr:
Hallo

Das programm was ich geschrieben habe ist zwar OK.
Aber leider habe ich nun noch 2 Schönheitsfehler.
Von den gewünschten Funktionen her klappt es wunderbar, aber ....

also er trägt alle Daten aus Excel in die Wordtabelle ein und Berechnet auch richtig den Gesamtpreis
wenn eine Ware leer oder in geringerer stückzahl als angegeben vorhanden ist dann gibt er die Meldung und sagt das nurnoch x vorhanden sind und das man doch die Ware y nachbestellen soll

Problem ist nun das er dann aber trotzdem mit der Schleife weitermacht
Ich weiß nun leider nicht wie ich ihm sage das er nach der Meldung einfach aussteigen soll und auf erneute eingabe warten soll (denke das irgendwie mit goTo gehen könnte)
Weiteres Problem ist das er nicht am Anfang der Tabelle anfängt einzutragen, sondern lustigerweise in der mitte der Tabelle und dann füllt er von oben auf bis die tabelle voll ist
wenn die Tabelle voll ist stürzt das Programm natürlich auch wieder ab
Wie geht es das er die Tabelle erweitert???
Oder soll ich einfach das Programm dann mit einem END killen und dann hat man ja seine Rechnung.
Aber wie mache ich ihm klar das er erst wenn die Tabelle voll ist das Programm killen soll???

der code von dem ganzen spaß:

Code:

Dim dateiauswahl
Dim xl As Object
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdRng As Word.Range
Dim ol As Object
Dim namen() As String
Dim Bereich As Object
Dim Einzel As Integer
Dim Menge As Integer
Dim i As Integer
Dim a As Integer
Dim b As Integer

Dim gesamtpreis As Integer

Private Sub UserForm_Activate()

'Datei-Öffnen Dialog zur Auswahl der Excel Datei
'Set Dialog = CreateObject("MSComDlg.CommonDialog")
'On Error Resume Next
'With Dialog
' .Filter = "Excel (*.xls)|*.xls"
' .DialogTitel = "Datei öffnen"
' .MaxFileSize = 260
' .InitDir = "C:"
' .ShowOpen
' If Err = 0 Then
' MsgBox "Ausgewälte Datei: " & .FileName
' End If
dateiauswahl = "C:\waren.xls"
' End With

'##Combobox mit Inhalten aus Excel füllen##
Set xl = CreateObject("excel.Application")
xl.workbooks.Open ("C:\waren.xls")
ComboBox1.Clear
Set Bereich = xl.worksheets(1).[A1].CurrentRegion
For i = 2 To Bereich.Rows.Count
ComboBox1.AddItem xl.worksheets(1).Cells(i, 1).Value
Next
ComboBox1.Value = ComboBox1.List(0)

Set wdApp = CreateObject("word.Application")

End Sub

Private Sub ComboBox1_Change()
'##Lagerbestand in Textfeld eintragen##
a = ComboBox1.ListIndex + 2
TextBox1.Text = xl.worksheets(1).Cells(a, 2).Value

End Sub

Private Sub WareBuchen_Click()
'##Benötigte Ware aus Lagerbestand ausbuchen und in Worddokument eintragen (Bezeichnung, Menge, Einzelpreis und Gesamtpreis)##
gesamtpreis = xl.worksheets(1).Cells(a, 3).Value

TextBox1.Text = TextBox1.Text - TextBox2.Text

If TextBox1.Text < 0 Or TextBox1.Text < TextBox2.Text Then
MsgBox "Nicht genügend Ware vorhanden! Nurnoch " & xl.worksheets(1).Cells(a, 2).Value & " Stück vorhanden Bitte bestellen Sie umgehend " & ComboBox1.Value & " nach", vbCritical, "FEHLER"
'Hier ein Abbruch einfügen damit nicht weitergerechnet wird
Else:
a = ComboBox1.ListIndex + 2
xl.worksheets(1).Cells(a, 2).Value = TextBox1.Text
TextBox1.Text = xl.worksheets(1).Cells(a, 2).Value

End If

' Do While c = False
'If ActiveDocument.Tables(1).Cell(a, 1).Range.Text = vbCr & Chr(7) Then
' c = True
'Else
b = b + 1
'End If
'Loop

ActiveDocument.Tables(1).Cell(a, 1).Range.Text = TextBox2.Text
ActiveDocument.Tables(1).Cell(a, 2).Range.Text = xl.worksheets(1).Cells(a, 1).Value
ActiveDocument.Tables(1).Cell(a, 3).Range.Text = xl.worksheets(1).Cells(a, 3).Value
ActiveDocument.Tables(1).Cell(a, 4).Range.Text = gesamtpreis * TextBox2.Text
' c = False

End Sub
Private Sub Rechnungssumme_Click()
'##Rechnungsbetrag berechnen##

End Sub

Private Sub Ende_Click()
xl.workbooks(1).Save
xl.Quit
Set xl = Nothing
End
End Sub

Private Sub UserForm_Terminate()
xl.workbooks(1).Save
xl.Quit
Set xl = Nothing
End Sub

wenn jemand weitere fehler im Code auffallen dann bin ich auch sehr froh wenn man mir das sagt
gelöschter
Benutzer
von am 23.11.2006 um 12:49 Uhr:
was willst du denn genau wissen??ich kenne mich excel sehr gut aus??
Lordares



44 Jahre
männlich
von Lordares am 23.11.2006 um 12:50 Uhr:
@u.a. eyelesse:
wer sich hiermit nicht auskennt oder hier nichts konstruktives beitragen kann, der möge bitte schweigen anstatt hier nur mist von sich zu geben. danke.
gelöschter
Benutzer
von am 23.11.2006 um 13:08 Uhr:
ja das stimmt der gebe ich ihm recht......damit muss man sich einfach aus kennen!!
Partyboy02



39 Jahre
männlich
von Partyboy02 am 23.11.2006 um 13:46 Uhr:
hi milly

was ich wissen will:

wieso schreibt er die Werte aus der Exceltabelle nicht in der Wordtabelle in die erste Zeile sondern fängt mitten drin an und springt dann in die erste zeile und macht weiter

kann dir gerne mal die dateien schicken
gelöschter
Benutzer
von am 23.11.2006 um 16:08 Uhr:
das muss ich mir mal ansehen so kann ich da nichts sagen!!
Knall_Kopp



38 Jahre
männlich
von Knall_Kopp am 23.11.2006 um 16:58 Uhr:
ich hab in vb fachabi machen müssen,nur so sieht man ja mal garnicht was los ist. schick den kram doch mal per mail rüber,dann kann ich mal nachschaun wo der fehler ist.
Partyboy02



39 Jahre
männlich
von Partyboy02 am 23.11.2006 um 22:27 Uhr:
sodala
habe es nun hinbekommen das alles so läuft wie ich es will

ABER
er schreibt immernoch das ganze in die falsche zeile
fängt in der mitte an und geht dann in die 1 Zeile
soll aber direkt in die 1 Zeile gehen

CODE:

Dim dateiauswahl
Dim xl As Object
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim wdRng As Word.Range
Dim ol As Object
Dim namen() As String
Dim Bereich As Object
Dim Einzel As Integer
Dim Menge As Integer
Dim i As Integer
Dim a As Integer
Dim b As Integer

Dim gesamtpreis As Integer

Private Sub UserForm_Activate()

'Datei-Öffnen Dialog zur Auswahl der Excel Datei
'Set Dialog = CreateObject("MSComDlg.CommonDialog")
'On Error Resume Next
'With Dialog
' .Filter = "Excel (*.xls)|*.xls"
' .DialogTitel = "Datei öffnen"
' .MaxFileSize = 260
' .InitDir = "C:\"
' .ShowOpen
' If Err = 0 Then
' MsgBox "Ausgewälte Datei: " & .FileName
' End If
dateiauswahl = "C:\waren.xls"
' End With

'##Combobox mit Inhalten aus Excel füllen##
Set xl = CreateObject("excel.Application")
xl.workbooks.Open ("C:\waren.xls")
ComboBox1.Clear
Set Bereich = xl.worksheets(1).[A1].CurrentRegion
For i = 2 To Bereich.Rows.Count
ComboBox1.AddItem xl.worksheets(1).Cells(i, 1).Value
Next
ComboBox1.Value = ComboBox1.List(0)

Set wdApp = CreateObject("word.Application")

End Sub

Private Sub ComboBox1_Change()
'##Lagerbestand in Textfeld eintragen##
a = ComboBox1.ListIndex + 2
TextBox1.Text = xl.worksheets(1).Cells(a, 2).Value

End Sub

Private Sub WareBuchen_Click()
'##Benötigte Ware aus Lagerbestand ausbuchen und in Worddokument eintragen (Bezeichnung, Menge, Einzelpreis und Gesamtpreis)##
gesamtpreis = xl.worksheets(1).Cells(a, 3).Value

If TextBox2.Text = "" Then
MsgBox "Bitte geben Sie eine Mengenangabe ein", vbCritical, "FEHLER"

Else:

'Prüfung ob genügend Wäre vorhanden ist. Ggf Ausgabe über noch vorhandene Menge und Artikelbeschreibung
If TextBox1.Text < 0 Or TextBox1.Text < TextBox2.Text Then
MsgBox "Nicht genügend Ware vorhanden! Nurnoch " & xl.worksheets(1).Cells(a, 2).Value & " Stück vorhanden Bitte bestellen Sie umgehend " & ComboBox1.Value & " nach", vbCritical, "FEHLER"

'Hier wurde ein Abbruch eingefügt, damit das Programm nicht weiterrechnet
Exit Sub

'Textboxen wieder auf Standardwerte setzen
TextBox1.Text = xl.worksheets(1).Cells(a, 2).Value
TextBox2.Text = ""


Else:
a = ComboBox1.ListIndex + 2
xl.worksheets(1).Cells(a, 2).Value = TextBox1.Text
TextBox1.Text = xl.worksheets(1).Cells(a, 2).Value

' Do While c = False
'If ActiveDocument.Tables(1).Cell(a, 1).Range.Text = vbCr & Chr(7) Then
' c = True
'Else
'b = b + 1
'End If
'Loop

ActiveDocument.Tables(1).Cell(a, 1).Range.Text = TextBox2.Text
ActiveDocument.Tables(1).Cell(a, 2).Range.Text = xl.worksheets(1).Cells(a, 1).Value
ActiveDocument.Tables(1).Cell(a, 3).Range.Text = xl.worksheets(1).Cells(a, 3).Value
ActiveDocument.Tables(1).Cell(a, 4).Range.Text = gesamtpreis * TextBox2.Text

TextBox2.Text = ""

End If
End If

End Sub
Private Sub Rechnungssumme_Click()
'##Rechnungsbetrag berechnen##

End Sub

Private Sub Ende_Click()
xl.workbooks(1).Save
xl.Quit
Set xl = Nothing
End
End Sub

Private Sub UserForm_Terminate()
xl.workbooks(1).Save
xl.Quit
Set xl = Nothing
End Sub
gelöschter
Benutzer
von am 24.11.2006 um 12:08 Uhr:
das weiss ich auch nicht kann es aber mal herausfinden warum es nicht geht wenn du willst!!
Partyboy02



39 Jahre
männlich
von Partyboy02 am 26.11.2006 um 21:11 Uhr:
klar will ich das Milly

tu dir keinen zwang an ;)
gelöschter
Benutzer
von am 27.11.2006 um 14:44 Uhr:
okay ich werde mal herausfinden das das ist ok!!
gelöschter
Benutzer
von am 14.12.2006 um 12:55 Uhr:
hast du das Problem schon gefunden??
Dein Beitrag zu diesem Thema
Hier könntest Du Deinen Beitrag zu diesem Thema verfassen...
...wenn Du eingeloggt wärst! Melde Dich jetzt an oder erstelle Dir einen kostenlosen Zugang.
Copyright © WebSphere Media. Alle Rechte vorbehalten. gus.websphere-media.de