2016-04-01 16 views
0

Ich versuche, mehrere Formularoptionsschaltflächen zu verwenden, wie im folgenden Code gezeigt. Das Ziel besteht darin, einen Datenbereich aus einer Spalte zu kopieren und sie in eine andere Spalte einzufügen. Nichts Außergewöhnliches. Also, ich habe mehrere Optionsfelder und eine Befehlsschaltfläche, die Button38 ist. Wenn ich den Code ausführe, erhalte ich keine Fehlermeldungen und es funktioniert nicht. Jede Hilfe wird sehr geschätzt, auch ich bin neu in VBA.Formularoptionstaste Excel VBA funktioniert nicht

Sub Button38_Click() 
Application.ScreenUpdating = False 
Sheets("Sheet2").Visible = True 
Sheets("Sheet2").Select 

If OptionButton22 = True Then 
Range("AI2:AI182").Copy 
Range("AK2:AK182").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _ 
     , SkipBlanks:=False, Transpose:=False 

ElseIf OptionButton23 = True Then 
Range("AD2:AD182").Copy 
Range("AK2:AK182").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _ 
     , SkipBlanks:=False, Transpose:=False 

ElseIf OptionButton24 = True Then 
Range("AE2:AE182").Copy 
Range("AK2:AK182").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _ 
     , SkipBlanks:=False, Transpose:=False 

End If 
Sheets("Sheet1").Select 
Sheets("Sheet2").Visible = False 
Application.ScreenUpdating = True 
End Sub 
+0

In welcher Zeile tritt der Fehler auf? Welcher Fehler ist es? – BruceWayne

+0

@BurceWayne Es wird kein Fehler angezeigt. Es ist sehr ruhig. Keine Fehlermeldung –

+0

- BruceWayne Es ist erwähnenswert, dass ich .value nicht in der Optionsbutton verwende, da mir gesagt wurde, dass ich das mit der Optionsschaltfläche Form verwenden soll. Wenn ich .value = True verwende. Ich gebe Fehlermeldung: Objekt erforderlich –

Antwort

1

ich neu eingestellt, alles zu Sheet1, und sheet2. Sheet1 ist derjenige, der über die Optionsschaltflächen Form verfügt, und sheet2 enthält die Spalten. Ich möchte, dass Blatt2 immer versteckt ist.

Sie verwenden Formularsteuerung (Optionsschaltfläche). Außerdem müssen Sie die Blätter nicht ein-/ausblenden. Lass es verborgen bleiben. Dieser Code funktioniert und der Bereich wird kopiert, selbst wenn Sheet2 ausgeblendet ist.

Ist das, was Sie versuchen?

Sub Button38_Click() 
    Dim wsThis As Worksheet, wsThat As Worksheet 
    Dim sCol As String 

    Set wsThis = Sheet2 '<~~ This sheet has the range 
    Set wsThat = Sheet1 '<~~ This sheet has FORM option buttons 

    With wsThis 
     If wsThat.Shapes("Option Button 22").OLEFormat.Object.Value = 1 Then sCol = "AI" 
     If wsThat.Shapes("Option Button 23").OLEFormat.Object.Value = 1 Then sCol = "AD" 
     If wsThat.Shapes("Option Button 24").OLEFormat.Object.Value = 1 Then sCol = "AE" 

     .Range(sCol & "2:" & sCol & "182").Copy 

     .Range("AK2:AK182").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, _ 
     Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
    End With 
End Sub 
+0

hey du hast meine 'sCol' Variable gestohlen! ;) –

+1

Schuldig wie geladen: P –

+0

Ernsthaft. Gute Antwort. Es ist schwer zu sagen, ob es "Form" oder "ActiveX" Option ist.Titel sagt 'Form', Code schlägt' ActiveX' vor ... * me denkt sein Form * –

0

Wenn Sie alle Ihre Objekte zu ihren Eltern qualifizieren, sollte der Code funktionieren. Siehe unten. (Ich habe den Code auch etwas überarbeitet, um ihn sauberer zu machen, einfacher zu warten/zu lesen und kürzer).

Sub Button38_Click() 

Dim ws1 as Worksheet 
Set ws1 = Worksheets("Sheet1") 

Application.ScreenUpdating = False 

With Sheet2 'using the VBA sheet object name (change if needed) 

    .Visible = xlSheetVisible 

    Dim sCol As String 

    If .OptionButton22 = True Then 
     sCol = "AI" 
    ElseIf .OptionButton23 = True Then 
     sCol = "AD" 
    ElseIf .OptionButton24 = True Then 
     sCol = "AE" 
    End If 

    .Visible = xlSheetHidden 

End With 

ws1.Range("AK2:AK182").Value = ws1.Range(sCol & "2:" & sCol & "182").Value 

'if you need the range theme copied as well use the code below 
'With ws1 
    '.Range(sCol & "2:" & sCol & "182").Copy 
    '.Range("AK2:AK182").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _ 
    , SkipBlanks:=False, Transpose:=False 
'End With 

End Sub 
+0

Es gab mir einen Fehler sehen Sie bitte das Bild unten: [1]: http://i.stack.imgur.com/xpJyJ.jpg –

+0

1) die Optionstasten sind auf Blatt2. 2) Ich möchte den Bereich innerhalb desselben Blattes kopieren, das Blatt 1 "ERGEBNISSE" ist. Ich möchte innerhalb desselben Blattes von einer Spalte in eine andere kopieren. Bitte frag mich, ob etwas unklar ist. Ich schätze deine Hilfe! –

+1

@ Moe.A - in Ihrem Bild ändern Sie 'Sheets (" Results ")' zu 'Sheet2' und benutzen Sie auch meinen bearbeiteten Code oben. –

Verwandte Themen