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:

  1. 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.

übertreffen Bild

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 
0
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