Excel-Makro funktioniert (außer) für eine Zelle
346
KAREN KENDALL
Ich habe ein Makro, das derzeit arbeitet, aber nicht zu 100%, und mich gefragt hat, ob jemand es freundlich überprüfen könnte. Das Problem ist, wenn in Zelle H24 eine Zahl eingegeben wird, führt das Makro die Berechnung nicht wie die anderen 4 Zellen durch.
Das sollte das Makro machen:
- Wenn in den folgenden Zellen eine Zahl eingegeben wird: D24, F24, H24, J24 und L24 und dann die Eingabetaste gedrückt wird, berechnet das Programm eine Berechnung und bucht die Antwort in die darunter liegende Zelle. Als Beispiel würde für die Zelle L24 (7.77 wurde eingegeben) die Antwort (1.55) in der Zelle L25 angezeigt. Es gibt immer Zahlen in einer oder allen fünf Zellen.
Alle Eingaben / Kommentare wären dankbar.
Code, der unter den folgenden Bedingungen veröffentlicht wurde:
VBAProject
Microsoft Excel Objects
Sheet1 (Daten)
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("MyInputs")) Is Nothing Then Exit Sub If Target = 0 Or Target = vbNullString Then Exit Sub Dim cLet As String Target.Offset(1, 0).ClearContents If Target.Value > 0 Then cLet = Target.Offset(2, 0).Value Range("B23").Formula = "=A23+INDIRECT(""" & cLet & """&""24"")" Range("C23").Formula = "=A23/2*INDIRECT(""B""&INDIRECT(""" & cLet & """&""23""))" ' Run Solver Application.Run ("RunSolver") 'Reset 'Activecell = 0 End If End Sub
Code, der unter den folgenden Bedingungen veröffentlicht wurde:
Modules Module1 Option Explicit Sub Preparation() Dim cLet As String ActiveCell.Offset(2, 0).ClearContents If ActiveCell.Value > 0 Then cLet = ActiveCell.Offset(1, 0).Value Range("B23").Formula = "=A23+INDIRECT(""" & cLet & """&""24"")" Range("C23").Formula = "=A23/2*INDIRECT(""B""&INDIRECT(""" & cLet & """&""23""))" ' Run Solver Application.Run ("RunSolver") 'Reset 'Activecell = 0 End If End Sub Private Sub RunSolver() Dim iLng As Long Dim Result iLng = Range("A23").Value ' Reset Application.Run "Solver.xlam!SolverReset" ' Set up new analysis Application.Run "Solver.xlam!SolverOk", "$B$23", 2, "0", "$A$23" ' Add constraints Application.Run "Solver.xlam!SolverAdd", "$B$23", 2, "$C$23" ' run the analysis Result = Application.Run("Solver.xlam!SolverSolve", True) ' finish the analysis Application.Run "Solver.xlam!SolverFinish" ' save the model 'Application.Run "Solver.xlam!SolverSave", "$R$2" 'SolverSolve UserFinish:=False 'SolverSave SaveArea:=Range("A33") ' report on success of analysis If Result <= 3 Then ' Result = 0, Solution found, optimality and constraints satisfied ' Result = 1, Converged, constraints satisfied ' Result = 2, Cannot improve, constraints satisfied ' Result = 3, Stopped at maximum iterations 'Display Result Cells(25, ActiveCell.Column).Value = Range("A23").Value Range("A23").Value = iLng MsgBox "Solver found a solution", vbInformation, "SOLUTION FOUND ..." Else ' Result = 4, Solver did not converge ' Result = 5, No feasible solution Beep MsgBox "Solver was unable to find a solution.", vbExclamation, "SOLUTION NOT FOUND ..." End If End Sub
Ich habe gewählt, um klar zu stellen, da Sie Ihre Frage nicht gut genug formatiert haben, um sie lesbar zu machen. Bitte bearbeiten Sie Ihre Frage, formatieren Sie sie richtig und ich bin mir sicher, dass wir Ihnen helfen können :)
Dave vor 6 Jahren
0
Ich habe keine Erfahrung mit Solver, und ich bin mir nicht sicher, was er tut. Wenn ich also nur das anschaue, was wir hier haben, kann ich nur daran denken, dass H24 nicht in Range ("MyInputs") enthalten ist.
Christofer Weber vor 6 Jahren
0
Ich möchte mich bei allen bedanken, die ein festes Format gesucht haben, aber ich denke, ich möchte diesen Beitrag schließen.
KAREN KENDALL vor 6 Jahren
0
0 Antworten auf die Frage
Verwandte Probleme
-
2
Konvertieren Sie Excel 4.0-Makro in VBA
-
3
Fixieren Sie ein (Heute) Datum in Excel
-
4
Excel 2007 | Entfernen Sie leere Felder aus den Pivot-Tabellen
-
2
Wie würde ein Outlook 2007-Makro zum Automatisieren des Einfügevorgangs - unformatierter Text ausseh...
-
4
Öffnen Sie mehrere Instanzen von Excel ohne PERSONAL.xlsb-Sperrnachricht
-
5
Wählen Sie eine gesamte Spalte ohne Kopfzeile in einem Excel-Makro aus
-
1
Stellen Sie das Blattschutzkennwort in Excel wieder her
-
2
Excel VBA: So löschen Sie eine Auswahl, ohne das Arbeitsblatt zu aktivieren
-
1
in Excel 2002 eine Zeichenfolge links von allen Zellen einer Spalte anhängen?
-
2
Makro zum Öffnen von Excel-Hyperlinks