| |

Fortgeschrittene Programmierungcode funktioniert nicht!!! | |  | Autor: eclere | Datum: 16.02.02 00:15 |
| hallo,
ich hoff jemand kann mir helfen. ich habe hier eine tabelle. die rechnen soll, aber es nicht tut, obwohl die funktion "ausrechnen" bei einer tabelle ohne schnickschnack prima funktioniert. erst seitdem ich die textbox drüber gelegt habe, um eingaben machen zu können geht es nicht mehr.
kann mir jemand sagen warum, und wie ich abhilfe schaffen kann?
gruss eclere
hier der code:
Private 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
Private Const CB_SHOWDROPDOWN = &H14F
Private Sub Command1_Click()
Call Ausrechnen
End Sub
Private Sub Form_Load()
Me.Left = 1200
Me.Top = 5700
Combo1.AddItem "Stück"
Combo1.AddItem "m²"
Combo1.AddItem "m"
Dim strCol As String
strCol = "Artikel|Menge|Einheit|Einzelpreis|Gesamtpreis"
MSFlexGrid1.FormatString = strCol
MSFlexGrid1.ColWidth(0) = 5700
MSFlexGrid1.ColWidth(1) = 600
MSFlexGrid1.ColWidth(2) = 800
MSFlexGrid1.ColWidth(3) = 1000
End Sub
Private Sub MSFlexGrid1_Click()
If MSFlexGrid1.Col <> 2 Then
Call SizeText
Text1.Visible = True
Text1.SetFocus
Else
Call SizeCombo
Combo1.Visible = True
Combo1.SetFocus
End If
End Sub
Private Sub Combo1_GotFocus()
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
End Sub
Private Sub MSFlexGrid1_GotFocus()
MSFlexGrid1_RowColChange
End Sub
Private Sub MSFlexGrid1_LeaveCell()
If MSFlexGrid1.Col <> 2 Then
MSFlexGrid1.Text = Text1.Text
Else
MSFlexGrid1.Text = Combo1.Text
End If
End Sub
Private Sub MSFlexGrid1_RowColChange()
Static OldRow%, OldCol%, Change As Boolean
If Change Then Exit Sub
Change = True
With MSFlexGrid1
If .Col <> OldCol Or .Row <> OldRow Then
OldRow = .Row
OldCol = .Col
If .Col <> 3 Then
Call SizeText
Text1.Visible = True
Text1.SetFocus
Else
Call SizeCombo
Combo1.Visible = True
Combo1.SetFocus
End If
End If
End With
Change = False
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
With MSFlexGrid1
Select Case KeyCode
Case vbKeyRight
If .Col + 2 > .Cols And .Row + 1 < .Rows Then
Col = 1
Row = .Row + 1
ElseIf .Col + 1 < .Cols And .Row < .Rows Then
Col = .Col + 1
End If
Case vbKeyUp
If .Row - 1 > 0 Then .Row = .Row - 1
Case vbKeyDown, vbKeyReturn
If .Row + 1 < .Rows Then .Row = .Row + 1
Case vbKeyLeft
If .Col - 1 = 0 And .Row - 1 <> 0 Then
Col = .Cols - 1
Row = .Row - 1
ElseIf .Col - 1 <> 0 Then
Col = .Col - 1
End If
End Select
End With
MSFlexGrid1_RowColChange
End Sub
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
With MSFlexGrid1
Select Case KeyCode
Case vbKeyRight
If .Col + 2 > .Cols And .Row + 1 < .Rows Then
Col = 1
Row = .Row + 1
ElseIf .Col + 1 < .Cols And .Row < .Rows Then
Col = .Col + 1
End If
Case vbKeyUp
If .Row - 1 > 0 Then .Row = .Row - 1
Case vbKeyDown, vbKeyReturn
If .Row + 1 < .Rows Then .Row = .Row + 1
Case vbKeyLeft
If .Col - 1 = 0 And .Row - 1 <> 0 Then
Col = .Cols - 1
Row = .Row - 1
ElseIf .Col - 1 <> 0 Then
Col = .Col - 1
End If
End Select
End With
MSFlexGrid1_RowColChange
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then KeyAscii = 0
If KeyAscii = vbKeyTab Then
Call Text1_KeyDown(vbKeyRight, 0)
KeyAscii = 0
End If
End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then KeyAscii = 0
If KeyAscii = vbKeyTab Then
Call Combo1_KeyDown(vbKeyRight, 0)
KeyAscii = 0
End If
End Sub
Private Sub Text1_LostFocus()
Text1.Visible = False
Call MSFlexGrid1_RowColChange
End Sub
Private Sub Combo1_LostFocus()
Combo1.Visible = False
Call MSFlexGrid1_RowColChange
End Sub
Private Sub SizeText()
With MSFlexGrid1
Text1.Text = .Text
Text1.FontSize = .Font.Size
Text1.Height = .CellHeight
If .CellLeft + .CellWidth > .Width Then
Text1.Width = .Width - .CellLeft
Else
Text1.Width = .CellWidth
End If
Text1.Left = .CellLeft + .Left
Text1.Top = .CellTop + .Top
End With
End Sub
Private Sub SizeCombo()
With MSFlexGrid1
Combo1.Text = .Text
Combo1.FontSize = .Font.Size
If .CellLeft + .CellWidth > .Width Then
Combo1.Width = .Width - .CellLeft
Else
Combo1.Width = .CellWidth
End If
Combo1.Left = .CellLeft + .Left
Combo1.Top = .CellTop + .Top
End With
End Sub
Private Sub Ausrechnen()
Dim i As Long
Dim Euro As Currency
With Tabelle
For i = .FixedRows To .Rows - 1
Euro = Val(.TextMatrix(i, 1)) * Val(.TextMatrix(i, 3))
.TextMatrix(i, 4) = Format(Euro, "#,##0.00")
Next
End With
End Sub |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|