Hej För att öka chansen att få de svar du är ute efter så snabbt och korrekt som möjligt skulle jag råda dig att (utöver källkoden, förstås) även ta med följande information: Jag får felmeddelande Vad har variablerna Experiment2 resp. Ezperiment3 för värde? Är dessa arbetsböcker öppnade? Workbooken Experiment2 är öppen Det är där jag har comboboxen som jag laddar med värden vid workbook .activate T.ex. A,B,C På det andra kalkylbladet Ezperiment3 kan det ju stå t.ex. 1 i cell A1 2 i cell B1 3 i cell C1När jag väljer A i kombobxen ska Ezperiment3 öppnas och värdet iA1 kopieras till cell A1 i Experiment2Detta är bara ett exempel som ska visa principen celler och värden kan naturligtvis väljas vad som helst Det är alltid lurigt att ha kod i Change event. Ett bra tips är att ange Var tog Roland vägen. Ja jag skrev ju ett långt svar nyss När jag skulle skicka det så var det plötsligt borta Ingen har tyvärr lyckats åstadkomma en kod som fungerarVad jag vill ha är följande Tack Thommy äntligen ngnting som fungerar utan felmeddelande Jag behövde bara ändra blad till Sheet eftersom jag har engelska versionen Jag kommer att ha stor användning för detta i mina tekniska program då jag måste hämta en massa data från exceltabeller Jag förstår inte allt men det spelar ingen rollNybörjare VBA
Varför fungerar inte den här koden Ngn som vill rätta till
Private Sub ComboBox1_Change()
Select Case ComboBox1
Case "A"
Workbooks(Experiment2).Sheet1.Range(A1) = Workbooks(Ezperiment3).Sheet1.Range(A1)
'Workbooks(Experiment2).Sheet1.Cells(1, 1) = Workbooks(Ezperiment3).Sheet1.Cells(1, 1)
End Select
End Sub
Private Sub UserForm_Activate()
ComboBox1.AddItem "A"
ComboBox1.AddItem "B"
ComboBox1.AddItem "C"
End SubSv: Nybörjare VBA
* Går koden att köra/kompilera? Om inte, vilket felmeddelande fås?
* När koden körs, vad händer som du INTE vill ska hända?
* När koden körs, vad händer inte som du VILL ska hända?
Annars är det lite som att ringa snickaren och säga "Mitt hus är trasigt, kom och fixa!", när problemet i själva verkat är att det droppar från handfatet i badrummet :)Sv:Nybörjare VBA
Runtime error'9'
Subscript out of range
Ingenting mer händer
Jag vill ju bara kopiera data från en arbetsbok till en annan.automatiskt.Sv: Nybörjare VBA
Case "A":
Dim sourcebook, targetbook As Workbook
If "" = Experiment2 Then
MsgBox ("Experiment2 saknar värde")
Return
ElseIf "" = Ezperiment3 Then
MsgBox ("Ezperiment3 saknar värde")
Return
End If
On Error Resume Next
Set sourcebook = Workbooks(Experiment2)
Set targetbook = Workbooks(Ezperiment3)
If sourcebook Is Nothing Then
MsgBox (Experiment2 & " är inte öppen")
Return
ElseIf targetbook Is Nothing Then
MsgBox (Ezperiment3 & " är inte öppen")
Return
End If
Sv:Nybörjare VBA
Sv: Nybörjare VBA
Du hamnar lätt i okontrollerad loop.
Tycker du skall testa om det funkar i
Private Sub ComboBox1_Click()
Dvs klicka på någon av val möjligheterna A B C
Finns felet kvar ?
Sen för tydlighetens skull vill jag ha det så här
Select Case ComboBox1.TextSv: Nybörjare VBA
Option Explicit
överst i din vb-kod.
Då kommer du få felmeddelandet "Variable not defined" i det här läget, eftersom du inte deklarerat variablerna Experiment2/Ezperiment3 som du försöker använda om uttrycket
Workbooks(Experiment2).
För att komma åt arbetsboken som *heter* Experiment2 behöver du göra
Workbooks("Experiment2")
Sv: Nybörjare VBA
Hur gick det sedan ! ?
Frustrerande när det inte blir FeedBack på tråden som startats. :-(Sv:Nybörjare VBA
1 En Workbook med följande cellvärden inlagda A1=1 A2=2 A3=3
2 Spara och stäng Workbooken
3Öppna en ny Workbook och lägg in en kombobox med tre värden A.B,C
4 När man väljer A i komboboxen ska värdet i A1 första workbooken läggas in i A1 andra workbooken
När man väljer B i komboboxen ska värdet i A2 första workbooken läggas in i A1andra workbooken
När man väljer C i komboboxen ska värdet i A3 första workbooken läggas in i A1 andra workbooken
Önskar en kod utan felmeddelanden som ju är omöjliga att tolka för en amatör Ange också om ngra inställningar behöver ändras
Är tacksam om ngn lyckas med dettaSv: Nybörjare VBA
I Workbook open eventet
Private Sub Workbook_Open()
With Sheets("Blad1")
.ComboBox1.AddItem "A"
.ComboBox1.AddItem "B"
.ComboBox1.AddItem "C"
End With
End Sub
I en modul i samma arbetsbok
WorkbookIsOpen kollar om arbetsboken är öppen
FileExists kollar om filen existerar
'The WorkbookIsOpen Function
Public Function WorkbookIsOpen(wbname) As Boolean
' Returns TRUE if the workbook is open
Dim x As Workbook
On Error Resume Next
Set x = Workbooks(wbname)
If Err = 0 Then WorkbookIsOpen = True Else: WorkbookIsOpen = False
End Function
'The FileExists Function
Public Function FileExists(fname) As Boolean
' Returns TRUE if the file exists
Dim x As String
x = Dir(fname)
If x <> "" Then FileExists = True _
Else FileExists = False
End Function
I combobox change eventet på bladet med comboboxen
Private Sub ComboBox1_Change()
Dim sourcebook As Workbook
Dim targetbook As Workbook
' kollar om arbetsboken är öppen
If Not WorkbookIsOpen(ThisWorkbook.Path & "\Ezperiment3.xlsx") Then
' kollar om filern existerar
If FileExists(ThisWorkbook.Path & "\Ezperiment3.xlsx") Then
' öppnar arbetsboken
Workbooks.Open (ThisWorkbook.Path & "\Ezperiment3.xlsx")
ThisWorkbook.Activate
Else
MsgBox ("Arbetsboken Ezperiment3.xlsx finns inte")
Exit Sub
End If
End If
Set sourcebook = Workbooks(ThisWorkbook.Name)
Set targetbook = Workbooks("Ezperiment3.xlsx")
Select Case ComboBox1.Text
Case "A"
sourcebook.Sheets("Blad1").Range("A1").Value = _
targetbook.Sheets("Blad1").Range("A1").Value
Case "B"
sourcebook.Sheets("Blad1").Range("A2").Value = _
targetbook.Sheets("Blad1").Range("A2").Value
Case "C"
sourcebook.Sheets("Blad1").Range("A3").Value = _
targetbook.Sheets("Blad1").Range("A3").Value
End Select
' stänger arbetsboken
Workbooks("Ezperiment3.xlsx").Close savechanges:=False
End Sub
Sv:Nybörjare VBA