Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA nur bereich statt Zeile

VBA nur bereich statt Zeile
22.11.2022 06:39:29
Klaus
Guten morgen miteinander,
ich habe ein User Form, der im Tabellenblatt 2022 in der Zeile 1 das Datum sucht. Ich möchte, das nicht komplett die erste Zeile sucht, nur von B1 bis NB1.
der hintergrund dafür ist, dass der Mitarbeiter im Jahr 2023 ein neues Tabellenblatt nimmt ( das erstelle dann ich ). Oder gibt es eine Möglichkeit, dass im User Form es nicht zu lässt Daten das die Daten von 2023 nicht in den Tabellenblatt 2022 kommen. ( z.b. Meldung. "melde dich an Admin das Daten in 2023 gespeichert werden darf )
Danke euch

Private Sub Cmd_Speichern_Click()
Dim crt As Control
Dim intCol As Integer
Dim lngDatum As Long
lngDatum = CDate(TextBox2_datum)
Application.ScreenUpdating = False
With Workbooks("report.xlsm").Sheets("2022")
If Not IsError(Application.Match(lngDatum, .Rows(1), 0)) Then
intCol = Application.Match(lngDatum, .Rows(1), 0)
.Cells(2, intCol).Value = TextBox1_user.Value
.Cells(4, intCol).Value = Txt_St.alue
.Cells(3, intCol).Value = Format(CDate(TextBox3_zeit.Value), "hh:mm")
.Cells(5, intCol).Value = Txt_Sp2.Value
If IsNumeric(TextBox28.Text) Then .Cells(28, intCol).Value = CDbl(TextBox28.Text) / 100
If IsNumeric(TextBox29.Text) Then .Cells(29, intCol).Value = CDbl(TextBox29.Text) / 100
If IsNumeric(TextBox30.Text) Then .Cells(30, intCol).Value = CDbl(TextBox30.Text) / 100
.Cells(31, intCol).Value = Txt_Arbeitszeit_früh.Value
Else
MsgBox "falsches Datum"
With TextBox2_datum
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
End With
MsgBox "Daten wurden Erfolgreich in die Datenbank gespeichert !!!", , "Rückantwort -> Datenbank"
With Workbooks("report.xlsm")
.Save
'.Close
End With
Application.ScreenUpdating = True
For Each crt In Me.Controls
Select Case TypeName(crt)
Case "TextBox"
crt.Value = ""
Case Else
End Select
Next
End Sub

Private Sub UserForm_Initialize()
Const STARTUP_MANUAL As Long = 0
StartUpPosition = STARTUP_MANUAL
Top = 20 'anpassen...
Left = 290 'anpassen...
TextBox1_user.Value = Application.UserName
TextBox2_datum.Value = Date
TextBox3_zeit.Value = Time


		

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA nur bereich statt Zeile
22.11.2022 06:50:27
ralf_b
ersetze .Rows(1) durch die Range z.b .Range("B1:NB1")
du solltest sicherheitshalber vor einem "exit sub" das screenupdating wieder einschalten
und hier ist eine Formelanwendung ausreichend. schreibe das Ergebnis in eine Variable und prüfe diese.
If Not IsError(Application.Match(lngDatum, .Rows(1), 0)) Then
intCol = Application.Match(lngDatum, .Rows(1), 0)
intcol sollte als Variant dimensioniert sein, weil es im Fehlerfall kein Integer ist.
intCol = Application.Match(lngDatum, .Range("B1:NB1"), 0)
if Not IsError(intcol) then
AW: VBA nur bereich statt Zeile
22.11.2022 07:00:14
Klaus
Hallo Ralf,
mein VBA wissen ist s.... schlecht. Das Programm hat damals ( vor 5 Jahren ) ein MA der nicht mehr da ist erstellt.
Könntest du mir bitte weiter in die Details gehen wie z.b. wie z.B:
und hier ist eine Formelanwendung ausreichend. schreibe das Ergebnis in eine Variable und prüfe diese.
Danke dir, dass du dir die Zeit nimmst.
Klaus
Anzeige
AW: VBA nur bereich statt Zeile
22.11.2022 07:06:56
ralf_b
die Korrektur steht doch drunter.
AW: VBA nur bereich statt Zeile
22.11.2022 07:13:12
Klaus
Hallo Ralf,
aber wohin kommt die Msg Box meldung ?
Danke
AW: VBA nur bereich statt Zeile
22.11.2022 06:56:34
GerdL
Moin Klaus!
If Not IsError(Application.Match(lngDatum, .Range("B1:NB1"), 0)) Then
intCol = 1 + Application.Match(lngDatum, .Range("B1:NB1"), 0)
Die eigentliche Frage ist, was willst du wo untersagen?
Gruß Gerd
AW: VBA nur bereich statt Zeile
22.11.2022 07:02:57
Klaus
Hallo Gerd,
ziel ist, das das Tabellenblatt 2022 auch nur für Daten aus 2022 eingetragen werden dürfen. Ich hatte damals das problem das Werte von 2022 in 2021 eingetragen wurde. Weil der Mitarbeiter einfach bei 31.12.2021 dann weiter gemacht hat 01.01.2022
Das war nicht so gut.
Danke dir
Anzeige
AW: VBA nur bereich statt Zeile
22.11.2022 08:52:41
GerdL
Hallo Klaus!

Dim lngDatum As Long
lngDatum = CDate(TextBox2_datum)
If Year(lngDatum)  2022 Then
MsgBox "Der Administrator muss für das Jahr " & Year(lngDatum) & " ein neues Tabellenblatt anlegen!", vbOKOnly
Exit Sub
End If
Application.ScreenUpdating = False
'....
Gruß Gerd
AW: VBA nur bereich statt Zeile
22.11.2022 09:36:19
Klaus
ah Super DANKESCHÖN

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige