Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1016to1020
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
Makrofehler nur beim Commandbutton
17.10.2008 11:00:00
Kurt
Guten Morgen,
warum klappt das Selectieren mit Commandbutton nicht.
Ich bin immer in der Tabelle "Gesamt"
Hier mit CommandButton:

Private Sub CommandButton100_Click()
Sheets("Datenbank").Select
ActiveSheet.Range("G3").Select
Dim z As Long
z = Range("g3").End(xlDown).Row
ActiveSheet.Range(Cells(3, 4), Cells(z, 34)).Select
End Sub


Hiermit klappt es, mit einer Schaltfläche:


Private Sub kopieren()
'------- Datenbank füllen -----------------
Sheets("Datenbank").Select
ActiveSheet.Range("G3").Select
Dim z As Long
z = Range("g3").End(xlDown).Row
'  ActiveSheet.Range(Cells(3, 4), Cells(z, 34)).Select
End Sub


Beim CommandButton kommt immer Fehlermeldung,
Laufzeitfehler 1004
Anwendungs und objektdefinierter Fehler
Wie kann ich es mit einem Commandbutton hinkriegen ?
mfg Kurt P

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makrofehler nur beim Commandbutton
17.10.2008 11:18:32
Tino
Hallo,
so geht’s
With Sheets("Datenbank")
     .Select
     .Range("G3").Select
 Dim z As Long
     z = Range("g3").End(xlDown).Row
          .Range(.Cells(3, 4), .Cells(z, 34)).Select
End With


Gruß Tino

Anzeige
Danke, habe noch eine Zusatzfrage, wenn möglich ?
17.10.2008 12:20:52
Kurt
Hallo Tino,
das klappt,
danke.
Habe noch eine Frage: ich möchte gern von der aktiven Tabelle in die Datenbank kopieren,
irgendwie kommt immer Fehler.
Hier mein Makro:
Das klappt soweit bis auf kopieren, wenn ich also in der 3.Spalte der "Alle" stehe möchte ich den Wert der
Zelle in die Datenbank, akt. Zelle einfügen.
Dann zurück und von der Spalte 4 in die Datenbank der nächsten Spalte eingesetzt.
Sheets("ALLE").Select
Dim az As Variant
Set az = ActiveCell
Sheets("Datenbank").Select
Dim dz As Variant
Dim z, ze As Long
z = Range("G2").End(xlDown).Row
ActiveSheet.Range(Cells(z, 4), Cells(z, 34)).Select
ActiveCell.Offset(1, 0).Select 'aktive Zelle u. 1 Zeile runter
Set dz = ActiveCell
'---------------- wenn der Courser irgendwo in der Zeile steht ------------------
Sheets("ALLE").Select
az.Select
ze = ActiveCell().Row
ActiveSheet.Range(Cells(ze, 3), Cells(ze, 51)).Select
ActiveCell().Select 'bleibt dann in der 3 Spalte
'--------------------------------------------------------------------------------
ActiveCell.Value = Sheets("Datenbank").Value
' ActiveCell.Offset(0, 1) = Sheets("Datenbank").Offset(0, 1)
'ActiveCell.Offset(0, 2) = Sheets("Datenbank").Offset(0, 2)
mfg Kurt P
Anzeige
AW: Danke, habe noch eine Zusatzfrage, wenn möglich ?
17.10.2008 12:44:00
Tino
Hallo,
bin mir nicht sicher ob ich Deinen Code richtig verstanden habe.
So müsste er funktionieren.
Dim az As Range
Dim dz As Range
Dim z, ze As Long
Sheets("ALLE").Select
Set az = ActiveCell
With Sheets("Datenbank")
    z = .Range("G2").End(xlDown).Row
    Set dz = .Cells(z, 34).Offset(1, 0)
End With
    '---------------- wenn der Courser irgendwo in der Zeile steht ------------------ 
   With Sheets("ALLE")
     .Range(.Cells(az.Row, 3), .Cells(az.Row, 51)).Value = dz.Value
   End With


Gruß Tino

Anzeige
Hallo geht nicht
17.10.2008 17:08:55
Kurt
Guten Abend Tino,
erst mal Danke für die bisherige Unterstützung.
So kopiert:
dz.Value = az.Value
es darf nicht die ganze Zeile kopiert werden, deshalb hatte ich das mit:
ActiveCell.Offset(0, 0) =
ich fummel mir gerade auch no einen ab, mal sehen,
mfg Kurt P
AW: Hallo geht nicht
17.10.2008 17:42:00
Tino
Hallo,
lade mal eine Beispieldatei hoch und sage mir welche Zelle bzw. Wert, Du wohin haben möchtest.
Gruß Tino
Hallo ich werde es nochmal so versuchen
17.10.2008 20:12:00
Kurt
Hallo Tino,
das Problem liegt darin, wenn ich von der Tabelle "Alle" in die "Datenbank" gehe
und dann zurück, kann ich nur diese Zeile kopieren das geht.
Dann bleib ich aber in der Tabelle"Alle" und möchte von der aktiven Zelle in die
nächste Spalte um dann diesen Wert in die Datenbank der nächsten Spalte zu kopieren.
Hier ein Beispiel von meiner UF das klappt es:
Datenbank. von UF
ActiveCell.Offset(0, 13) = TextBox20
ActiveCell.Offset(0, 14) = Label27
ActiveCell.Offset(0, 15) = TextBox12
Dim az As Range
Dim dz As Range
Dim z, ze As Long
Sheets("Alle").Select
Set az = ActiveCell
Sheets("Datenbank").Activate
z = Range("G2").End(xlDown).Row
ActiveSheet.Range(Cells(z, 4), Cells(z, 34)).Select
ActiveCell.Offset(1, 0).Select 'aktive Zelle u. 1 Zeile runter
Set dz = ActiveCell
'---------------- wenn der Courser irgendwo in der Zeile steht ------------------
Sheets("Alle").Select
az.Select
ze = ActiveCell().Row
ActiveSheet.Range(Cells(ze, 3), Cells(ze, 51)).Select
ActiveCell().Select 'bleibt dann in der 3 Spalte
'--------------------------------------------------------------------------------
'in Datenbank von ALLe
dz.Value = az.Value 'Funktioniert
Exit Sub
mfg kurt P
Anzeige
AW: Hallo ich werde es nochmal so versuchen
17.10.2008 20:38:00
Tino
Hallo,
also dieser Code macht das gleiche wie Deiner mit den ganzen Select
Dim az As Range
Dim dz As Range
Dim z, ze As Long

With Sheets("Alle")
 .Select
    With Sheets("Datenbank")
     z = .Range("G2").End(xlDown).Row
     Set dz = .Cells(z, 4).Offset(1, 0)
    End With

dz.Value = .Cells(ActiveCell.Row, 3).Value
End With

Exit Sub


Gruß Tino

Anzeige
Du hast RECHT aber
17.10.2008 22:33:18
Kurt
Hallo Tino,
ja Du hast RECHT aber jetzt möchte ich doch von der Tabelle "Alle" eine Spalte nach Rechts
und den Inhalt in die Datenbank RECHTS neben der voherigen Zelle.
dz.Value = .Cells(ActiveCell.Row, 3).Value
dz.Value +1 = .Cells(ActiveCell.Row, 4).Value
dz ist ja die Tabelle Alle ,
mfg kurt p
AW: Du hast RECHT aber
17.10.2008 22:53:44
Tino
Hallo,
da gibt es zwei Möglichkeiten
Möglichkeit 1
Dim az As Range
Dim dz As Range
Dim z, ze As Long

With Sheets("Alle")
 .Select
    With Sheets("Datenbank")
     z = .Range("G2").End(xlDown).Row
     Set dz = .Cells(z, 5).Offset(1, 0)
    End With

dz.Value = .Cells(ActiveCell.Row, 3).Value
End With

Exit Sub


Möglichkeit 2

Dim az As Range
Dim dz As Range
Dim z, ze As Long

With Sheets("Alle")
 .Select
    With Sheets("Datenbank")
     z = .Range("G2").End(xlDown).Row
     Set dz = .Cells(z, 4).Offset(1, 0)
    End With

dz.Offset(0, 1).Value = .Cells(ActiveCell.Row, 3).Value
End With

Exit Sub


Gruß Tino

Anzeige
AW: Guten Morgenhier kommt Muster !
18.10.2008 10:19:15
Tino
Hallo,
wünsche Dir auch erst mal einen Guten Morgen!
So müsste es gehen,
es werden nur die Werte übertragen keine Zellformate (Rahmen, Zellfarben usw.)
Sollte dies gewünscht sein, melde Dich nochmal, dann wir bauen den Code etwas um.
https://www.herber.de/bbs/user/56092.xls
Gruß Tino
Super aber die Spalten...
18.10.2008 14:50:00
Kurt
Hallo Tino,
das Beispiel ist Gut DANKE aber ich muß einzelne Zellen kopieren bzw. bestimmte,
deswegen kann man nicht die kompl. Zeile kopieren.
Anstelle von Label oder Textbox ist also die akt. Zeile gemeint also aus der
"ALLE" Tabelle z.b. akt. Zeile Spalte1, 2,3,4,5, 7,9, 10 u.s.w
deshalb hatte ich das so kompliziert !
Hier mein Muster von meiner UF als Beispiel:
Dim z As Long
z = Range("G2").End(xlDown).Row
ActiveSheet.Range(Cells(z, 4), Cells(z, 34)).Select
ActiveCell.Offset(1, 0).Select 'ActiveCell.Offset(1, 0) idt die Datenbank
ActiveCell.Offset(0, 0) = Label89
ActiveCell.Offset(0, 1) = Label90
ActiveCell.Offset(0, 2) = Label91
ActiveCell.Offset(0, 3) = Label63
ActiveCell.Offset(0, 4) = Label88
ActiveCell.Offset(0, 5) = Label92
ActiveCell.Offset(0, 6) = Label93
ActiveCell.Offset(0, 7) = Label94
ActiveCell.Offset(0, 9) = TextBox18
ActiveCell.Offset(0, 10) = Label96
ActiveCell.Offset(0, 11) = TextBox27
ActiveCell.Offset(0, 12) = TextBox28
ActiveCell.Offset(0, 13) = TextBox20
ActiveCell.Offset(0, 14) = Label27
ActiveCell.Offset(0, 15) = TextBox12
ActiveCell.Offset(0, 16) = TextBox22
ActiveCell.Offset(0, 17) = Label33
ActiveCell.Offset(0, 18) = Label34
ActiveCell.Offset(0, 19) = Label86
ActiveCell.Offset(0, 20) = TextBox13
ActiveCell.Offset(0, 21) = TextBox14
ActiveCell.Offset(0, 22) = TextBox15
ActiveCell.Offset(0, 23) = TextBox16
ActiveCell.Offset(0, 24) = TextBox17
ActiveCell.Offset(0, 25) = Label80
ActiveCell.Offset(0, 26) = Label69
ActiveCell.Offset(0, 27) = Label80
ActiveCell.Offset(0, 28) = Label84
ActiveCell.Offset(0, 29) = Label72
ActiveCell.Offset(0, 30) = Label74.Caption
mfg kurt P
Anzeige
AW: Super aber die Spalten...
18.10.2008 15:23:33
Tino
Hallo,
verwende doch einfach anstelle von ActiveCell, dass Range Objekt.
Dim Datenbank As Range

With Sheets("Datenbank")
  Set Datenbank = .Cells(.Rows.Count, "D").End(xlUp).Offset(1, 0)
End With

With Datenbank
    .Value = Label89.Caption
    .Offset(0, 1) = Label90.Caption
    .Offset(0, 2) = Label91.Caption
    .Offset(0, 3) = Label63.Caption
    .Offset(0, 4) = Label88.Caption
    .Offset(0, 5) = Label92.Caption
    .Offset(0, 6) = Label93.Caption
    .Offset(0, 7) = Label94.Caption
    .Offset(0, 9) = TextBox18
    .Offset(0, 10) = Label96.Caption
    .Offset(0, 11) = TextBox27
    .Offset(0, 12) = TextBox28
    .Offset(0, 13) = TextBox20
    .Offset(0, 14) = Label27.Caption
    .Offset(0, 15) = TextBox12
    .Offset(0, 16) = TextBox22
    .Offset(0, 17) = Label33.Caption
    .Offset(0, 18) = Label34.Caption
    .Offset(0, 19) = Label86.Caption
    .Offset(0, 20) = TextBox13
    .Offset(0, 21) = TextBox14
    .Offset(0, 22) = TextBox15
    .Offset(0, 23) = TextBox16
    .Offset(0, 24) = TextBox17
    .Offset(0, 25) = Label80.Caption
    .Offset(0, 26) = Label69.Caption
    .Offset(0, 27) = Label80.Caption
    .Offset(0, 28) = Label84.Caption
    .Offset(0, 29) = Label72.Caption
    .Offset(0, 30) = Label74.Caption
End With


Gruß Tino

Anzeige
Hallo leider nochmal...
18.10.2008 15:49:00
Kurt
Hallo Tino,
was setze ich den anstatt Label u. Textbox ein ?
Da muß doch von der Tabelle "Alle" ebenfalls ActiveCell.Offset(0, 1 verwendet werden,
mfg kurt p
AW: Hallo leider nochmal...
18.10.2008 16:04:00
Tino
Hallo,
z. Bsp. so

'ActiveCell.Row = die Zeilennummer
'und der Buchtabe ist die Spalte bzw.
'kann auch die ensprechende Spaltennummer verwendet werden
.Offset(0, 1) = Cells(ActiveCell.Row, "D") 'oder Cells(ActiveCell.Row, 4)
.Offset(0, 2) = Cells(ActiveCell.Row, "E") 'oder Cells(ActiveCell.Row, 5)
.Offset(0, 3) = Cells(ActiveCell.Row, "F") 'oder Cells(ActiveCell.Row, 6)


Gruß Tino

Anzeige
Ich verzweifel
18.10.2008 16:32:00
Kurt
Hallo Tino,
habe in der Testdatei getestet geht nicht,
Von der Tabelle "Alle" soll in die Datenbank kopiert werden.
Als Ausgangspunkt für die akt.Zelle zu finden, hatte ich diese Makrozeilen:
Dim az As Range
Dim z, ze As Long
Sheets("Alle").Select
Set az = ActiveCell
Sheets("Alle").Select
az.Select
ze = ActiveCell().Row
ActiveSheet.Range(Cells(ze, 3), Cells(ze, 51)).Select
ActiveCell().Select 'bleibt dann in der 3 Spalte
egal wo ich in der Zeile den Courser gesetzt habe, ging dann die die akt. Zelle in die Spalte A,
jetzt sollte Zelle für Zelle in die nächste freie Zeile in die Datenbank kopiert werden, angefangen
in der Spalte "D", es wurde in der Spalte "G" ermittelt wie weit die Zeilen belegt sind, dann
habe ich den Courser 1 Zeile tifer und in die Spalte "D" gesetzt.
Jetzt sollte dann nach meiner Auswahl reinkopiert werden.
so z.b.
'.Offset(0, 1) = Cells(ActiveCell.Row, "D") 'oder Cells(ActiveCell.Row, 4)
'.Offset(0, 2) = Cells(ActiveCell.Row, "E") 'oder Cells(ActiveCell.Row, 5)
'.Offset(0, 3) = Cells(ActiveCell.Row, "F") 'oder Cells(ActiveCell.Row, 6)
tut mir leid ich teste auch schon mindesten 12h, werde bald ....
mfg kurt p
Habe mal so getestet aber
18.10.2008 17:10:06
Kurt
Hallo Tino,
habe mal so getestet:

Sub Datensatz_In_Datenbank_Kopieren()
Sheets("Datenbank").Activate
z = Range("G2").End(xlDown).Row
ActiveSheet.Range(Cells(z, 4), Cells(z, 34)).Select
ActiveCell.Offset(1, 0).Select                  'aktive Zelle u. 1 Zeile runter
Set dz = ActiveCell
'---------------- wenn der Courser irgendwo in der Zeile steht ------------------
Dim az As Range
Sheets("Alle").Select
Set az = ActiveCell
Sheets("Alle").Select
az.Select
ze = ActiveCell().Row
ActiveSheet.Range(Cells(ze, 3), Cells(ze, 51)).Select
ActiveCell().Select                                 'bleibt dann in der 3 Spalte
Sheets("Datenbank").Range("D4").Value = ActiveCell.Offset(0, 0).Value
Sheets("Datenbank").Range("E4").Value = ActiveCell.Offset(0, 1).Value
End Sub


Das klappt soweit aber wie kann ich diese Zeile:
Sheets("Datenbank").Range("D4").Value
halt variabel darstellen, da ich ja nicht die nächste Leere Zeile ansprechen kann ?
Nur das ist das Problem, die restlichen Zeilen erstellen ist ja kein Problem,
bitte nochmal helfen,
danke im voraus,
mfg kurt P

AW: Habe mal so getestet aber
18.10.2008 17:26:00
Tino
Hallo,
na so
Option Explicit

Sub Datensatz_In_Datenbank_Kopieren()
 Sheets("Alle").Select
With Sheets("Datenbank")
  Set Datenbank = .Cells(.Rows.Count, "D").End(xlUp).Offset(1, 0)
End With

'ActiveCell.Row gibt Dir die Zeilennummer in der Du dich befindest zurück 
'und die 3 bzw. 4 ist die Spalte 
 Datenbank.Value = Cells(ActiveCell.Row, 3)
 Datenbank.Offset(0, 1).Value = Cells(ActiveCell.Row, 4)
End Sub


Bin jetzt gleich außer Haus, heute Abend bin ich wieder Online.
Gruß Tino

Das wars, DANKE !!! -)
18.10.2008 17:39:00
Kurt
Hallo Tino,
deine Version ist mal kürzer besser !
Läuft genau so wie ich brauche.
In der Zwischenzeit hatte ich auch (umständlich) auch das Ergebnis nur zur Info:
Sub Datensatz_In_Datenbank_Kopieren()
Sheets("Datenbank").Activate
z = Range("G2").End(xlDown).Row
ActiveSheet.Range(Cells(z, 4), Cells(z, 34)).Select
ActiveCell.Offset(1, 0).Select 'aktive Zelle u. 1 Zeile runter
Set dz = ActiveCell
'---------------- wenn der Courser irgendwo in der Zeile steht ------------------
Dim az As Range
Sheets("Alle").Select
Set az = ActiveCell
Sheets("Alle").Select
az.Select
ze = ActiveCell().Row
ActiveSheet.Range(Cells(ze, 3), Cells(ze, 51)).Select
ActiveCell().Select 'bleibt dann in der 3 Spalte
'--------------------------------------------------------------------------------
With Sheets("Datenbank")
.Cells(z + 1, 4) = ActiveCell.Offset(0, 0).Value
.Cells(z + 1, 5) = ActiveCell.Offset(0, 1).Value
.Cells(z + 1, 6) = ActiveCell.Offset(0, 2).Value
.Cells(z + 1, 7) = ActiveCell.Offset(0, 3).Value
.Cells(z + 1, 8) = ActiveCell.Offset(0, 4).Value
End With
herzlichen DANK !
Ein schönes Wochenende !
AW: Makrofehler nur beim Commandbutton
17.10.2008 12:03:09
Kawensmann
Hallo,
stell' die "TakeFocusOnClick"-Eigenschaft des Commandbuttons auf "False".
Gruß
Kawensmann
Hallo Kawensmann, DANKE für den Tip
17.10.2008 12:22:00
Kurt

212 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige