Excel VBA "CommandButton1_Click" bei bestimmter Bedingung nach bestimmter Zeit ausführen

1 Antwort

VBA ist ereignisorientiert, d. h. von allein startet kein Makro.

Es gibt aber das Change-Ereignis des Arbeitsblattes. (Du kannst oben links das Steuerelement auswählen, für das du Code schreiben willst - hier "Worksheet", und danach rechts das betreffende Ereignis - hier "Change".

Am besten prüfst du, ob Range die Zelle I7 enthält, aber das ist bei solch einem einfachen Beispiel wohl nicht nötig.

Bei If kannst du Else auch komplett weglassen.

Für den Zeitablauf kannst du die Sleep-Funktion nehmen, siehe http://www.vbarchiv.net/api/api_sleep.html



Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long )

Die Declare-Anweisung muss möglichst weit oben stehen, am besten unter "Option Explicit" und den ersten Kommentaren (so vorhanden).

Du kannst mit der Sleep-Funktion die Programmausführung für lange Zeit anhalten, aber in der Zeit reagiert das Programm nicht. Vielleicht reagiert Excel selbst dann noch, aber kein Makro.

Du kannst dann den Sleep-Befehl in eine Schleife setzen, z. B.

For i = 1 To 200 ' 20 Sekunden in Zehntelsekunden
    Sleep 100 '1/10 Sekunde in Millisekunden
    DoEvents 'Das Programm soll weiterlaufen
Next i

Wobei dann die Anweisung auch dann noch ausgeführt wird, wenn sich in der Zwischenzeit der Inhalt der interessierenden Zelle geändert hat. Hier muss man ggf. eine weitere Abfrage einbauen.

gugl auch mal nach Application.OnTime und Wait bzw schau in der Hilfe nach! (Bin selbst nicht firm in sowas)

0

VBA für Excel Verknüpfungen aktualisieren?

Hallo alle zusammen,

ich bin am verzweifeln.. :-(

Ich möchte über VBA Verknüpfungen in einem aktiven Tabellenblatt ändern. Ich finde aber immer nur Antworten wie man Verknüpfungen der gesamten Arbeitsmappe ändert.

Die Verknüpfungen beziehen sich auf ein anderes (nicht aktives) Tabellenblatt in der selben Arbeitsmappe.

In der Zelle steht zum Beispiel =WENN(ISTFEHLER('04.2016'!$C8);"";'04.2016'!$C8) und VBA soll mir aus '04.2016' nun '06.2016' machen.

Bei meiner VBA Idee kommt immer der Fehler 438 (Objekt unterstützt diese Eigenschaft oder Methode nicht) und kennzeichnet Vardat = ActiveSheet.LinkSources(Type:=xlLinkTypeExcelLinks) an

Hier meine VBA Idee. Wer kann mir helfen? Dank Euch im Voraus.... :-)

Sub Verknüpfungenaktualisieren()

Dim Vardat As Variant Dim strNeuerLink As String

strNeuerLink = "'06.2016'" strAlterLink = "'04.2016'"

Vardat = ActiveSheet.LinkSources(Type:=xlLinkTypeExcelLinks)

If IsEmpty(Vardat) Then

MsgBox "Keine Verknüpfungen enthalten!"

Exit Sub

End If

For intz = 1 To UBound(Vardat)

If Vardat(intz) = ActiveSheet.Path & "(" & strAlterLink Then ActiveSheet.ChangeLink ActiveSheet.Path & "(" & strAlterLink, _ ActiveSheet.Path & "(" & strNeuerLink, xlExcelLinks

Exit For

End If

Next intz

End Sub

...zur Frage

hallo brauche hilfe in vbaaaaaa excel?

hallo, ich brauche hilfe in excel vba, hab eine aufgabenstellung in excel und vba erstellt, allerdings klappt das so net mit vba.

Aufgabenstellung: Habe in den zellen A9 bis A13 Personalnummer angegeben, in Zellen B9 bis B13 stehen Überstunden, wenn man in Zelle C3 die personalnummer eingibt, erscheint in Zelle 4 die Anzahl der Überstunden von der jeweiligen personalnummer, es ist auch eine ampel integriert, so das diese dann immer zwischen grün gelb und rot schaltet, bis alles was kleiner als 110 ist, ist grün, zwischen 110-140 geld, alles was 140 überschreitet ist rot.

das will ich als vba nutzen mit einem button, wenn mann drauf klickt so das mann aufgefordert ist die personalnummer einzugeben und dann ein dialog erscheint und mir sagt , die personalnummer hat soviel überstunden und ist im gelben bereich zb.

aber mit vba klappt das so net ganz, habe drei screenschots gemacht, bild 1 und 2 sind von mir, bild drei ist ein beipspiel, das will auch so bei mir einbinden... ich kriege das aber net gebacken, bei mit kommt immer der fehler laufzeitfehler 424 objekt erforderlich, was heisst, kriege die vba funktion nicht auf excel übertragen

Vba code

Private Sub ComboBox1_Change() y = "" bc = &H8000000F

z = ComboBox1.ListIndex If z > -1 Then y = Cells(9 + z, 2) If y < 110 Then bc = &HC000& If (y >= 110) And (y < 140) Then bc = &HFFFF& If y >= 140 Then bc = &HFF& End If

Label1.Caption = y Image1.BackColor = bc End Sub Private Sub CommandButton1_Click() UserForm1.Hide End Sub Private Sub UserForm_Initialize() For t = 9 To 13 ComboBox1.AddItem (Cells(t, 1)) Next End Sub

hoffe einer kann mir helfen...

danke im voraus

beste grüße matheasi

...zur Frage

Wie kann ich Variablen übergeben (Excel, VisualBasic)?

Hallo zusammen,

ich habe eine UserForm in der folgendes steht:

    ...
    Spalte = 3
    Zeile = 6
    
    Unload UserForm1
    
    If OptionButton2 = True Then
        UserForm2.Show
    End If
...

In der zweiten UserForm steht dann:

Sub CommandButton1_Click()

If OptionButton1 = True Then
    Spalte = 6
ElseIf OptionButton2 = True Then
    Spalte = 9
ElseIf OptionButton3 = True Then
    Spalte = 12
ElseIf OptionButton4 = True Then
    Spalte = 15
End If

Unload UserForm2

End Sub

Leider funktioniert es nicht und "Spalte" bleibt immer 6.. Kann mir jemand weiterhelfen und sagen wie ich es hin bekomme, dass Spalte geändert wird?

...zur Frage

Organigram Excel mit einklappen und ausklappen (per Makro?)?

Hallo Zusammen,

etwas komplizierteres Problem hier: (zumindest bin ich nach stundenlangem Googeln auf englisch und deutsch auf kein akzeptables ergebis gekommen)

Im Prinzip klingt es einfach: Ich will ein Organigramm erstellen per Excel (Word wuerde auch noch gehen, keine sonstige Freeware da ich im Buero keine Software runterladen kann/darf). Nun will ich aber kein "statisches" Organigram (zb per SmartArt). Es soll eher so etwas sein wo ich auf einen Namen klicke und dann alle untergeordneten Leute/Mitarbeiter aufklappen (NUR DIE VON DEM JEWEILIGEN "BOSS").

Mit Gruppieren etc. komme ich nicht vorran da ich 1. will dass es per Mausklick auf den namen geht und 2. ich nicht mehr als 8 untergruppen erstellen kann damit.

Am liebsten auch ein Makro dass ich anpassen koennte ?Hab hier noch ein Bild was vllt etwas besser erklaert was ich meine.

Zum Bild:Ich will dann quasi dass am Anfang nur "CEO" da steht. Dann klicke ich zb auf "C" dann poppen 1,2,3,4,5 auf und ich klicke auf "1" dann poppen 11,12,13 auf etc.. der rest soll am besten verborgen bleiben (viel uebersichtlicher)

Hoffe, dass war einigermassen gut erklaert. Bei Fragen etc einfach nachfragen...Ich finde dazu leider auch wirklich nirgends etwas (ausser irgendwelcher Freeware etc.) Aber es MUSS doch moeglich sein?

Danke euch vieeelmals schonmal!!!

EDIT:

hab jetzt mal probiert einen Makro zu schreiben:

Sub collapse()

Selection.Offset(1, 1).Select
Range(Selection, Selection.End(xlDown)).

Select Selection.EntireRow.Hidden = True

End Sub

_______

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

If Target.Column = 2 Then

Target.Select

Call collapse

End If

If Target.Address = "$B$10" Then

Target.Select

Call collapse

End If

End Sub

____

Problem: Wenn ich es mit "target.column" mache (was mir lieber ist) dann wuerde ich gerne haben dass er bei leeren zellen nichts macht in dieser spalte... wie geht das genau? und hat einer eine ahnung wie ich das hinkrieg dass wenn ich WIEDER auf die gleiche zelle gehe er mir des rueckgaengig macht? Ich hab so eine ahnugn mit true/false denke ich mal aber habe keine ahnung wie ich das umsetzen kann..

Also irgendwie dass wenn ich einmal draufdruecke und des eingeklappt ist er weiss visibile = false oder sowas und wenn ich wieder draufdruecke soll er halt true machen versteht ihr mich :D?

...zur Frage

Was habe ich bei diesem VBA Code falsch gemacht?

Hallo miteinander,

Ich habe ein Problem!

Ich habe einen Code geschrieben der mir richtig erscheint, aber ich erhalte immer den gleichen Fehler:

Laufzeitfehler'13'

Typen unverträglich

Die Microsoft Hilfe nützt leider auch nichts!

Könntet ihr mir weiterhelfen?

Der Code steht unten:


Public text13 As Date
Public Text2 As Long
Private Sub CommandButton1_Click()
If text13 = Format("DD/MM/YYYY") Then
If Not text13 = Format("DD/MM/YYYY") Then
MsgBox ("Ups, Sie haben kein korrektes Datum eingegeben!")
End If
With Me.TextBox1
Cells(65000, 1).End(xlUp).Offset(1, 0).Activate
ActiveCell = text13
End With
With Me.TextBox2
Cells(65000, 2).End(xlUp).Offset(1, 0).Activate
ActiveCell = Text2
End With
Else
MsgBox ("Irgendetwas stimmt nicht!")
End If
TextBox1 = ""
TextBox2 = ""
End Sub
Private Sub TextBox1_Change()
Dim Text1 As Variant
Text1 = TextBox1
text13 = CDate(Text1)
End Sub
Private Sub TextBox2_Change()
Text2 = TextBox2.Value
End Sub

Ich wäre froh über eine schnelle Antwort!

Danke schon im Voraus!

Mit Freundlichen Grüssen

StillGamingLP

...zur Frage

Excel: VBA: Workbook schließen

Ich möchte mit VBA eine offenes Workbook schließen. Natürlich gibt es da ganz viel im Internet, aber das klappt bei mir einfach nicht:

Folgende Versuche habe ich schon unternomen:

Sub Foo()
     Workbooks("xxx.xlsm").Close savechanges:=False     
     ActiveWorkbook.Close False
     ActiveWorkbook.Close savechanges:=False        
End Sub

Aber die Codezeilen werden ausgeführt (Debugmodus), aber das Workbook ist immer noch offen

...zur Frage

Was möchtest Du wissen?