Registriert seit: 05.01.2020
Version(en): 365 Pro Plus
Hallo,
ich möchte einer Zelle durch einen Druck eines Buttons einen um Eins höheren Zellwert zuweisen, bis ein Maximalwert erreicht ist, und dann wieder bei Eins anfangen. Mit einem Maximalwert von 3 sollten also durch Druck des Buttons in der betreffenden Zelle die Zahlen in folgender Reihenfolge erscheinen: 1, 2, 3, 1, 2, 3, 1, 2, 3, ....usw. usf.
Habe leider keinen Schimmer, wie ich das hinkriegen kann.
Grüßle
Newbi
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Moin,
folgenden Code hinters Arbeitsblatt:
Code: Option Explicit
Private Sub CommandButton1_Click()
Dim value As Single
value = value + 1
If Range("A1").value >= 5 Then
Range("A1").value = 0
End If
Range("A1") = Range("A1") + 1
End Sub
Aktuell wird mit diesem Makro in Zelle A1 bis 5 gezählt. Du musst das ggfls. auf deine Bedürfnisse anpassen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 11.04.2014
Version(en): Office 2003 - Office 2007 - Office 365
06.01.2020, 08:28
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2020, 08:56 von marose67.)
Hallo,
so?
Tabelle1Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Zitat:Option Explicit
Sub Schaltfläche1_Klicken()
Dim Loletzte As Long
Dim i As Integer
i = 0
For Loletzte = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
i = i + 1
If i > 3 Then i = 1
Cells(2, Loletzte) = i
Next
End Sub
Gruß
Marcus
Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, Sub Makro1()
With Range("B2")
.Value = (.Value Mod 3) + 1
End With
End Sub Gruß Uwe
Registriert seit: 11.04.2014
Version(en): Office 2003 - Office 2007 - Office 365
Hallo,
ich habe die Fraage heute morgen woh komplett falsch verstanden. Sorry. Mein Beitrag ist überflüssig.
Gruß
Marcus
Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo zusammen,
ich habe es auch so ähnlich verstanden wie Markus.
Nach meinem Verständnis soll aber alles in eine Zelle geschrieben werden und nicht in einzelne.
Unten stehender Code reiht die in Zelle A1 stehende Zahl entsprechen oft in Zelle B2 auf.
Code: Sub wiederholen()
Dim lngZahl As Long
Dim strgZahl As String
Dim a As String
lngZahl = Cells(1, 1)
If lngZahl > 0 Then
For i = 1 To lngZahl
strgZahl = strgZahl & "," & i
Next i
strgZahl = Right(strgZahl, Len(strgZahl) - 1) & ","
With Range("B2")
.ClearContents
For i = 1 To lngZahl
a = a & strgZahl
Next i
a = Right(a, Len(a)) & ","
If Len(a) >= 32761 Then
MsgBox "Die Textlänge ist größer als die maximal mögliche Zeichenanzahl für eine Zelle." & vbLf _
& vbLf & "Möglicherweise werden Zeichen abgeschnitten"
End If
.Value = a
End With
End If
End Sub
Zuerst habe ich es mit der WorksheetFunction.Rept() versucht umzusetzen. Jedoch hat diese anscheinend ein Limit. Da ich nicht weiß, wo der Limit liegt, habe ich es mit der Schleife realisiert.
Gruß Atilla
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
ich hab hier mal meine Auffassung der Aufgabe Ist auch wieder fest auf B2 programmiert - könnte man durch ActiveCell ersetzen. Fehlerbetrachtungen sind nicht enthalten, z.B. leere Zelle, nur eine Zahl in Zelle, Text in Zelle, falsches Trennzeichen, Zeichenanzahl …
Lediglich eventuelle Leerzeichen werden entfernt.
Code: Sub Makro3()
'Variablendeklarationen
Dim arrZahlen, iMax%, iCnt%
'von Leerzeichen befreiten Zellinhalt von B2 uebernehmen und in ein Array ueberfuehren
arrZahlen = Split(Replace([b2], " ", ""), ",")
'max feststellen
'Schleife ueber alle Zahlen
For iCnt = 0 To UBound(arrZahlen)
'wenn die Zahl kleiner als imax ist, dann
If WorksheetFunction.Max(arrZahlen(iCnt)) < iMax Then
'Schleife verlassen
Exit For
'oder iMax hochsetzen
Else: iMax = WorksheetFunction.Max(arrZahlen(iCnt))
'Ende wenn die Zahl kleiner als imax ist, dann
End If
'Ende Schleife ueber alle Zahlen
Next
'Array erweitern
ReDim Preserve arrZahlen(UBound(arrZahlen) + 1)
'wenn die letzte Zahl die groesste ist, dann
If Val(arrZahlen(UBound(arrZahlen) - 1)) = iMax Then
'Array mit 1 erweitern
arrZahlen(UBound(arrZahlen)) = 1
'oder wenn nicht,
Else
'Array mit letzter Zahl + 1 erweitern
arrZahlen(UBound(arrZahlen)) = arrZahlen(UBound(arrZahlen) - 1) + 1
'Ende wenn die letzte Zahl die groesste ist, dann
End If
'Zahlenfolge in B2 eintragen
Range("B2").Value = Join(arrZahlen, ",")
End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
|