Supportnet / Forum / Tabellenkalkulation
CheckBox [Anfänger]
Frage
Hallo,
wenn ich ein Kontrollkästchen mit einem Makro verknüpfe (
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Rows(1).Select
...)
dann bekomme ich die Fehlermeldung beim Ausführen, daß das Objekt nicht definiert ist.
Was mache ich falsch? Warum findet das Makro CheckBox1.Value nicht?
Gruß!
Antwort 1 von Hazgalad
Was markiert er dir den im Debugger? Vielleicht stimmt ein Objektname nicht überein?
Antwort 2 von JamesBrown
Ja, macht er. Woher weiß ich aber den Objektnamen von meinem Kontrollkästchen, auf das sich das Makro bezieht?
Antwort 3 von michel123
hi all :)
gruss michel
hier ein makroaufruf innerhalb eines kontrollkästchens ohne parameter
Private Sub CheckBox1_Click()
makro01
End Sub
und hier ein nettes makro um sie zu zaehlen :))
Sub makro01()
Dim zaehler1 As Integer
Dim zaehler2 As Variant
zaehler1 = 0
On Error Resume Next
For Each zaehler2 In ActiveSheet.Shapes
If zaehler2.OLEFormat.ProgId = "Forms.CheckBox.1" Then If zaehler2.OLEFormat.Object.Object Then zaehler1 = zaehler1 + 1
Next
Range("A1") = zaehler1
On Error GoTo 0
End Sub
gruss michel
hier ein makroaufruf innerhalb eines kontrollkästchens ohne parameter
Private Sub CheckBox1_Click()
makro01
End Sub
und hier ein nettes makro um sie zu zaehlen :))
Sub makro01()
Dim zaehler1 As Integer
Dim zaehler2 As Variant
zaehler1 = 0
On Error Resume Next
For Each zaehler2 In ActiveSheet.Shapes
If zaehler2.OLEFormat.ProgId = "Forms.CheckBox.1" Then If zaehler2.OLEFormat.Object.Object Then zaehler1 = zaehler1 + 1
Next
Range("A1") = zaehler1
On Error GoTo 0
End Sub
Antwort 4 von michel123
hi james :)
dein beispiel waere dann so
gruss michel
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Rows(1).Select
End If
End Sub
dein beispiel waere dann so
gruss michel
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Rows(1).Select
End If
End Sub
Antwort 5 von JamesBrown
Richtig, aber dennoch.
Wenn ich das Kontrollkästchen auf True setze, dannmeldet sich der Debugger mit
Laufzeitfehler 424: Objekt erforderlich
in der Zeile: If CheckBox1.Value = True Then
Wenn ich das Kontrollkästchen auf True setze, dannmeldet sich der Debugger mit
Laufzeitfehler 424: Objekt erforderlich
in der Zeile: If CheckBox1.Value = True Then
Antwort 6 von michel123
hi james :)
in dem code des konntrollkästchens sollte nur true false abfrage mit aufruf des makros sein,kein weiterer code,sollte dies so sein so kann ich nimmer weiterhelfen :(
gruss michel
in dem code des konntrollkästchens sollte nur true false abfrage mit aufruf des makros sein,kein weiterer code,sollte dies so sein so kann ich nimmer weiterhelfen :(
gruss michel
Antwort 7 von JamesBrown
Schau mal michel:
Private Sub CheckBox1_Click()
makro01
End Sub
Sub makro01()
If CheckBox1.Value = True Then
Rows(1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Cells(1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End If
End Sub
wo ist der Fehler? Ich komm nicht klar *heul*
Private Sub CheckBox1_Click()
makro01
End Sub
Sub makro01()
If CheckBox1.Value = True Then
Rows(1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Cells(1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End If
End Sub
wo ist der Fehler? Ich komm nicht klar *heul*
Antwort 8 von michel123
hi james :)
es gibt manchmal probs mit tabellenuebergreifenden befehlen,daher teste vielleicht ein konntrollkästchen mit makroaufruf wo sich das makro auf der selben tabelle bezieht wo sich das konntrollkästchen befindet
durch diese problematik eben ratsam nur ein makroaufruf
wenn es daran liegt :)) ??
gruss michel
es gibt manchmal probs mit tabellenuebergreifenden befehlen,daher teste vielleicht ein konntrollkästchen mit makroaufruf wo sich das makro auf der selben tabelle bezieht wo sich das konntrollkästchen befindet
durch diese problematik eben ratsam nur ein makroaufruf
wenn es daran liegt :)) ??
gruss michel
Antwort 9 von michel123
hi james :)
fein :) ich teste mom :))
gruss michel
fein :) ich teste mom :))
gruss michel
Antwort 10 von michel123
hi james :)
ich blindfisch hehe
die abfrage checkbox true false gehoert natuerlich nicht in das makro ,sie wurde doch in der checkbox aufgerufen :)))
gruss michel
achja deine naechste uebungaufgabe koennte sein das ganze ohne select und selectionen :)))
Sub makro01()
Rows(1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Cells(1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End Sub
ich blindfisch hehe
die abfrage checkbox true false gehoert natuerlich nicht in das makro ,sie wurde doch in der checkbox aufgerufen :)))
gruss michel
achja deine naechste uebungaufgabe koennte sein das ganze ohne select und selectionen :)))
Sub makro01()
Rows(1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Cells(1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End Sub
Antwort 11 von michel123
hi james :))
hier noch ein beispiel wie man ohne selectionen die ja arg das tempo mindern auskommt :)
gruss michel
beachte die with anweisung,die kannst du folgendermassen schön ausnutzen,ohne vorangestelten punkt bezieht sich auf die aktive tabelle und mit vorangestellten punkt auf die tabelle die hinter with angegeben ist aber nicht mit namen sondern dessen index nummer,hier wird von der tabelle1 die zeile 1 copiert und das zeilenende von tabelle2 erfasst und rangehangen
Sub makro01()
With Worksheets(1)
.Rows(1 & ":" & 1).Copy Sheets(2).Rows(Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell) _
.Row + 1 & ":" & Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
End With
End Sub
hier noch ein beispiel wie man ohne selectionen die ja arg das tempo mindern auskommt :)
gruss michel
beachte die with anweisung,die kannst du folgendermassen schön ausnutzen,ohne vorangestelten punkt bezieht sich auf die aktive tabelle und mit vorangestellten punkt auf die tabelle die hinter with angegeben ist aber nicht mit namen sondern dessen index nummer,hier wird von der tabelle1 die zeile 1 copiert und das zeilenende von tabelle2 erfasst und rangehangen
Sub makro01()
With Worksheets(1)
.Rows(1 & ":" & 1).Copy Sheets(2).Rows(Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell) _
.Row + 1 & ":" & Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
End With
End Sub
Antwort 12 von michel123
hi james :)
faellt mir noch so ein :)
du kannst von checkboxen in einem normalen makro true false nicht abfragen,doch tricksen kannst wenn es dennoch nötig ist,man koennte eine public boolean var parallel zu true false mitlaufen lassen ,die puplicvar dann in der checkbox true false schalten und da ja puplic ist vom makro abfragbar ist :))
gruss michel
faellt mir noch so ein :)
du kannst von checkboxen in einem normalen makro true false nicht abfragen,doch tricksen kannst wenn es dennoch nötig ist,man koennte eine public boolean var parallel zu true false mitlaufen lassen ,die puplicvar dann in der checkbox true false schalten und da ja puplic ist vom makro abfragbar ist :))
gruss michel
Antwort 13 von JamesBrown
Hi michel,
du bist offensichtlich der profi von uns beiden *freu*
deine erklärungen und beispiele sind schon sehr hilfreich gewesen, um einiges besser zu verstehen.
ich habe das Makro
Sub makro01()
If CheckBox1.Value = True Then
Rows(1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Cells(1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End If
End Sub
schon häufig hier gesehen in den beiträgen, aber warum, wenn es nicht funktioniert, da true und false nicht abgefragt werden können?
Ich möchte doch nur, daß wenn im Kästchen der Haken gesetzt wird, bestimmte area kopiert und an anderer stelle eingesetzt wird. kommt der haken wieder raus, sollen diese neuen zellen wieder geleert werden. wie kann man das nun mit den kästchen umsetzen?
herzlichen Dank, Sascha
du bist offensichtlich der profi von uns beiden *freu*
deine erklärungen und beispiele sind schon sehr hilfreich gewesen, um einiges besser zu verstehen.
ich habe das Makro
Sub makro01()
If CheckBox1.Value = True Then
Rows(1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Cells(1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End If
End Sub
schon häufig hier gesehen in den beiträgen, aber warum, wenn es nicht funktioniert, da true und false nicht abgefragt werden können?
Ich möchte doch nur, daß wenn im Kästchen der Haken gesetzt wird, bestimmte area kopiert und an anderer stelle eingesetzt wird. kommt der haken wieder raus, sollen diese neuen zellen wieder geleert werden. wie kann man das nun mit den kästchen umsetzen?
herzlichen Dank, Sascha
Antwort 14 von michel123
hi james :)
versteh nicht falsch ,innerhalb der checkbox ist true false fuer die checkbox abfragbar,doch in einem allgemeinen makro ist true false der checkbox nicht abfragbar
fuer deine zwecke reicht ja denk ich der makroaufruf in der checkbox,die problematik stellt sich ja nur wenn du in einem makro true false der checkbox abfragen wolltest ,dann waere eine puplic var eine möglichkeit :))
also nimm in deinem obigen makro01 nur diese beiden zeilen weg,dann geht es ja :)
If CheckBox1.Value = True Then
End If
gruss michel
versteh nicht falsch ,innerhalb der checkbox ist true false fuer die checkbox abfragbar,doch in einem allgemeinen makro ist true false der checkbox nicht abfragbar
fuer deine zwecke reicht ja denk ich der makroaufruf in der checkbox,die problematik stellt sich ja nur wenn du in einem makro true false der checkbox abfragen wolltest ,dann waere eine puplic var eine möglichkeit :))
also nimm in deinem obigen makro01 nur diese beiden zeilen weg,dann geht es ja :)
If CheckBox1.Value = True Then
End If
gruss michel
Antwort 15 von JamesBrown
aber dann würde immer das makro ausgeführt werden (kopieren...einfügen), jedesmal bei klick auf kontrkästchen. aber ich möchte nur das bei true so ausgeführt wird. bei false soll der kopiert bereich wieder gelöscht werden (delete kopierte bereich). das geht doch nur, wenn ich true und false der checkbox im makro abfragen kann.... aber wie?
Antwort 16 von michel123
hi james :)
oder so ,mit 2 makros,eines fuer true eines fuer false
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
makroEINS
End If
If CheckBox1.Value = False Then
makroZWEI
End If
End Sub
Sub makroEINS()
Rows(1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Cells(1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End Sub
Sub makroZWEI()
rem ...
End Sub
oder noch die publicvariante
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
makro01
End If
End Sub
Public checkAnzahl As Boolean
Sub makro01()
If checkAnzahl = True Then
Rem haken gesetzt
Cells(1, 1) = "gesetzt"
End If
If checkAnzahl = False Then
Rem haken nicht gesetzt
Cells(1, 1) = "nicht gesetzt"
End If
End Sub
gruss michel
oder so ,mit 2 makros,eines fuer true eines fuer false
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
makroEINS
End If
If CheckBox1.Value = False Then
makroZWEI
End If
End Sub
Sub makroEINS()
Rows(1).Select
Selection.Copy
Sheets("Tabelle2").Activate
Sheets("Tabelle2").Cells(1, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Tabelle1").Select
End Sub
Sub makroZWEI()
rem ...
End Sub
oder noch die publicvariante
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
makro01
End If
End Sub
Public checkAnzahl As Boolean
Sub makro01()
If checkAnzahl = True Then
Rem haken gesetzt
Cells(1, 1) = "gesetzt"
End If
If checkAnzahl = False Then
Rem haken nicht gesetzt
Cells(1, 1) = "nicht gesetzt"
End If
End Sub
gruss michel
Antwort 17 von michel123
hi james :)
ups bei der puplic variante hatt ich falsch kopiert ,korrigiert
gruss michel
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
checkAnzahl = True
End If
If CheckBox1.Value = False Then
checkAnzahl = False
End If
End Sub
Public checkAnzahl As Boolean
Sub makro01()
If checkAnzahl = True Then
Rem haken gesetzt
Cells(1, 1) = "gesetzt"
End If
If checkAnzahl = False Then
Rem haken nicht gesetzt
Cells(1, 1) = "nicht gesetzt"
End If
End Sub
ups bei der puplic variante hatt ich falsch kopiert ,korrigiert
gruss michel
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
checkAnzahl = True
End If
If CheckBox1.Value = False Then
checkAnzahl = False
End If
End Sub
Public checkAnzahl As Boolean
Sub makro01()
If checkAnzahl = True Then
Rem haken gesetzt
Cells(1, 1) = "gesetzt"
End If
If checkAnzahl = False Then
Rem haken nicht gesetzt
Cells(1, 1) = "nicht gesetzt"
End If
End Sub
Antwort 18 von JamesBrown
nunja, aber da kommt doch trotzdem wieder mein altbewährtes problem, dass wenn das makro von zeile
Private Sub CheckBox1_Click()
in
If CheckBox1.Value = True Then
geht, der vbe mir sagt: "Laufzeitfehler: Objekt erforderlich."
muß das Private eigentlich sein?
Private Sub CheckBox1_Click()
in
If CheckBox1.Value = True Then
geht, der vbe mir sagt: "Laufzeitfehler: Objekt erforderlich."
muß das Private eigentlich sein?
Antwort 19 von michel123
hi james
die zeile muss doch raus, aus einem normalen makro,nimm sie weg,hatte ich oben doch gesagt das es daran lag,end if net vergessen auch wegzunehmen
gruss michel
die zeile muss doch raus, aus einem normalen makro,nimm sie weg,hatte ich oben doch gesagt das es daran lag,end if net vergessen auch wegzunehmen
gruss michel
Antwort 20 von JamesBrown
hast du telefon?
Antwort 21 von michel123
hi james :)
wenn haeckchen gesetzt ist ruf makro01 auf zum kopieren zum beispiel
wenn haekchen nicht gesetzt ist kein aufruf oder 2 makro fuer ...
oder eben die puplic variante die mit einem makro dann auskommt
mit etwas uebung schaffst du das auch,obige beispiele sollten reichen
gruss michel
wenn haeckchen gesetzt ist ruf makro01 auf zum kopieren zum beispiel
wenn haekchen nicht gesetzt ist kein aufruf oder 2 makro fuer ...
oder eben die puplic variante die mit einem makro dann auskommt
mit etwas uebung schaffst du das auch,obige beispiele sollten reichen
gruss michel