Anzeige
Archiv - Navigation
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Makro einem Button zuordnen
Immanuel

Guten Tag
Ich glaube ich habe ein einfaches Problem, weiss aber doch nicht, wie ich es lösen soll.
Ich habe ein Makro programmiert (danke an die Forum-Schreiber!!) und nun möchte ich dies einem Button zuordnen. Ich habe dies einfach in einen Commandbutton hinein kopiert, aber ... ERROR.
wie macht man das genau?
Danke

Was für Code, was für Error... (owT)
21.01.2008 10:34:43
Renee

AW: Was für Code, was für Error... (owT)
Immanuel
Einfach den Fehler welchen ich im Makro programmiert habe: "an error occured!"
Danke

Keine Ursache... WO IST DER CODE? owT
21.01.2008 11:18:51
Renee

AW: Keine Ursache... WO IST DER CODE? owT
Immanuel
Ich habe einfach einen Button gemacht und den Code hineinkopiert. Ist das der richtige Weg?
Ist dann der Anfang und das Ende richtig programmiert?
bei mir steht
Sub SearchForString()
und am Ende
End Sub


Beim Button steht:


Private Sub CommandButton1_Click()
und am Schluss
End Sub


Bringt diese Antwort etwas?

NEIN. Ist der Code so geheim? ..(owT)
21.01.2008 11:48:58
Renee

AW: NEIN. Ist der Code so geheim? ..(owT)
Immanuel
Ach so, nein überhaupt nicht, er ist nur sehr lang!! Also ich werde einfach die wichtigen Dinge reinkopieren, sonst ist er viel zu lang..
Hier ist eine Anfangsversion

Sub SearchForString()
Dim LSearchRow As Integer
Dim LCopyToRow As Integer
On Error GoTo Err_Execute
'Start search in row 4
LSearchRow = 4
'Start copying data to row 2 in Sheet2 (row counter variable)
LCopyToRow = 2
While Len(Range("A" & CStr(LSearchRow)).Value) > 0
'If value in column B = "A", copy entire row to Sheet2
If Range("A" & CStr(LSearchRow)).Value = "A" Then
'Select row in Sheet1 to copy
Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
Selection.Copy
'Paste row into Sheet2 in next row
Sheets("A_").Select
Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
ActiveSheet.Paste
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
Sheets("Sheet1").Select
End If
LSearchRow = LSearchRow + 1
Wend
'Start search in row 4
LSearchRow = 4
'Start copying data to row 2 in Sheet2 (row counter variable)
LCopyToRow = 2
While Len(Range("A" & CStr(LSearchRow)).Value) > 0
'If value in column E = "B", copy entire row to B
If Range("A" & CStr(LSearchRow)).Value = "B" Then
'Select row in Sheet1 to copy
Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
Selection.Copy
'Paste row into Sheet2 in next row
Sheets("B_").Select
Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
ActiveSheet.Paste
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
Sheets("Sheet1").Select
End If
LSearchRow = LSearchRow + 1
Wend
'Position on cell A3
Application.CutCopyMode = False
Range("A3").Select
Sheets("A_").Select
Range("B1:B256").Select
Selection.Copy
Sheets("A").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, transpose:=True
Sheets("B_").Select
Range("B1:B256").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("B").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, transpose:=True
Sheets("Sheet1").Select
Range("A3").Select
'Position on cell A3
Application.CutCopyMode = False
Range("A3").Select
MsgBox "All matching data has been copied."
Exit Sub
Err_Execute:
MsgBox "An error occurred."
End Sub


Ich hoffe das bringt was..
Danke

Anzeige
AW: NEIN. Ist der Code so geheim? ..(owT)
21.01.2008 12:35:00
Klaus
Hallo Immanuel,
lösch mal diese Zeile

MsgBox "An error occurred."


dann geht auch die Fehlermeldung weg ^^
Nein ernsthaft,
das Problem sind die vielen .select, welche sich auf Tabellenblätter beziehen. Durch die Kopie des Code in einen Button wird der Fokus verändert, vom Tabellenblatt auf den Button. Möglichkeiten
- Stelle die "Get Focus on Click" Eigenschaft des Button auf "False" ODER
- schreibe "activecell.activate" in die Erste Zeile des Codes ODER
- vermeide konsequent die benutzung von .select und .activate!
Punkt 1 oder 2 sollten dein Problem kurzfristig lösen,
Punkt 3 solltest du dir zu für die Zukunft zu Herzen nehmen!
Grüße,
Klaus M.vdT.

Anzeige
AW: NEIN. Ist der Code so geheim? ..(owT)
21.01.2008 12:44:00
Klaus
Zu Punkt 3:
Ohne select sähe das zB so aus (ungetestet):

Sub SearchForString()
Dim LSearchRow As Integer
Dim LCopyToRow As Integer
On Error GoTo Err_Execute
'Start search in row 4
LSearchRow = 4
'Start copying data to row 2 in Sheet2 (row counter variable)
LCopyToRow = 2
With Sheets("Sheet1")
While Len(.Range("A" & CStr(LSearchRow)).Value) > 0
'If value in column B = "A", copy entire row to Sheet2
If .Range("A" & CStr(LSearchRow)).Value = "A" Then
'Select row in Sheet1 to copy
.Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Copy
'Paste row into Sheet2 in next row
Sheets("A_").Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Paste
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
'Sheets("Sheet1").Select
End If
LSearchRow = LSearchRow + 1
Wend
'Start search in row 4
LSearchRow = 4
'Start copying data to row 2 in Sheet2 (row counter variable)
LCopyToRow = 2
While Len(.Range("A" & CStr(LSearchRow)).Value) > 0
'If value in column E = "B", copy entire row to B
If .Range("A" & CStr(LSearchRow)).Value = "B" Then
'Select row in Sheet1 to copy
Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Copy
'Paste row into Sheet2 in next row
Sheets("B_").Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Paste
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
'Sheets("Sheet1").Select
End If
LSearchRow = LSearchRow + 1
Wend
'Position on cell A3
Application.CutCopyMode = False
'    .Range("A3").Select
Sheets("A_").Range("B1:B256").Copy
Sheets("A").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("B_").Range("B1:B256").Copy
Sheets("B").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
'    Sheets("Sheet1").Select
'    Range("A3").Select
'Position on cell A3
Application.CutCopyMode = False
.Range("A3").Select             'Die Zeile kannst du auch löschen - es sei denn du WILLST  _
A3 selektiert haben!
MsgBox "All matching data has been copied."
End With
Exit Sub
Err_Execute:
MsgBox "An error occurred."
End Sub


Anzeige
In welchem Kontext steht der Code?
21.01.2008 12:49:43
Renee
Hi Immanuel,
Die HelferInnen hier wären froh, wenn du soviel (und nicht so wenig) Informationen wie möglich zu einem Problem liefern könntest. Mit diesen Minimalangaben ist eine Hilfe sehr aufwändig und frau verliert irgendwann die Lust weiterzuhelfen.
Wenn du einen Code in einem Modul hast, kannst du nicht einfach den Kontext ändern, denn eine CommandButton1_Click() gehört z.B. in das Tabellenblatt oder die UF, je nachdem wo sich der Button befindet. Sonst kommt das ganze nicht zum laufen.
GreetZ Renée

AW: In welchem Kontext steht der Code?
Immanuel
Hallo Renée
Nun ich habe mir das Problem wohl zu einfach vorgestellt.. Trotzdem schon mal vielen Dank für deine Bemühungen. Nun ich versuche ein bisschen genauer zu beschreiben, was das Makro macht.
Es sucht in einem grossen Datensatz (Renditen nach Regionen geordnet) nach Namen (Regionen), kopiert dann die ganze Spalte und weist diese in neue Datenblätter ein. Dort werden sie transponiert und noch einmal in ein neues Datenblatt eingefügt..
Ich weiss nicht ob das etwas geholfen hat.
Ich weiss leider auch nicht wieviel informationen gebraucht werden um das Problem zu lösen.. ich stellte mir das Problem sehr einfach vor, aber scheinbar müssen die Codes auch im Commandbutton je nach Funktion angepasst werden ?!
Danke
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige