PDA

Vollständige Version anzeigen : ActiveSheet.Range -> Daten aktualisieren


isarc
08.07.2014, 10:57
Hallo

habe folgendes Problem: Ich möchte bei der Aktualisierung nicht nur das ActiveSheet aktualisieren, sondern direkt das Sheet mit Namen ansprechen.

Ich weiß leider die Kombination nicht..:eek:

so?


Tabelle1.range ?

Danke für Eure Tips

aloys78
08.07.2014, 11:28
Hallo,
Ich möchte bei der Aktualisierung nicht nur das ActiveSheet aktualisieren, sondern direkt das Sheet mit Namen ansprechen.
Ich weiss zwar nicht, wozu das gut sein könnte, aber eine Möglichkeit wäre:
Select Case ActiveSheet.Name
Case Is = "Tabelle1"
Tabelle1.Range("A1") = 3
Case Is = "Tabelle2"
Tabelle2.Range("A1") = 3
Case Is = "Tabelle3"
Tabelle3.Range("A1") = 3
End Select

isarc
09.07.2014, 15:38
Vielen Dank.

Naja das weitere Problem ist, dass ich zwei verschiedene Sheets habe. (Calcu Proforma und Calcu Angebot.

Mit dem Klick auf den button soll er der Calcu Angebot in das ActiveSheet einfügen. (funktioniert bereits)

Calcu Proforma in Tabelle1 (Funktioniert noch nicht)


mein code bisher:


Public Sub kopieren(rng As String)
Dim a As Variant
Dim i As Long


Workbooks.Open ("Y:\isarcolor_Prog\generieren.xlsm")


a = Split(rng, ",")
With ThisWorkbook.Sheets("Calcu Angebot")
For i = LBound(a) To UBound(a)
ActiveSheet.Range(a(i)).Value = .Range(a(i)).Value
Next
With ThisWorkbook.Sheets("Calcu Proforma")
For i = LBound(a) To UBound(a)

Tabelle1.Range(a(i)).Value = .Range(a(i)).Value

End With
End Sub

PS: Weiss jemand für was ich die "Split" Funktion benötige?

Danke Euch
Andi

EarlFred
09.07.2014, 15:58
Hallo Andi,

wirklich schlau werde ich aus dem (nicht lauffähigen) Codefetzen nicht. Vor allem verstehe ich schon die Eingangsfrage nicht.

Aber hierzu kann ich meinen Senf beisteuern:
PS: Weiss jemand für was ich die "Split" Funktion benötige?
Wenn ich das richtig sehe, übergibst Du über rng die Adresse eines Zellbereichs, getrennt durch Kommas. Das Splitten der Adresse ist aber nicht nötig, da der Bereich (auch wenn er aus mehreren Teilbereichen besteht) insgesamt über diese Adresse ansprechbar ist, also:

Option Explicit
Public Sub kopieren(rng As String)
Dim wbZiel As Workbook

Set wbZiel = Workbooks.Open("Y:\isarcolor_Prog\generieren.xlsm")

wbZiel.Worksheets("NameDesWorksheets").Range(rng).Value = ThisWorkbook.Worksheets("Calcu Angebot").Range(rng).Value

'weiterer Code

wbZiel.Close savechanges:=True
Set wbZiel = Nothing
End Sub


Sub startehier()
kopieren ("A1,A2,A5,A10,B1:B4")
End Sub

Grüße
EarlFred

isarc
10.07.2014, 09:33
Hy Fred,

das Problem ist halt, dass ich zwei Sheets akutualisieren möchte.

Die Frage stellt sich mir, ob ich das mit einem einzigen Klick auf den Button mit dem Befehl "kopieren" bewerkstelligen kann ?

Danke dir

isarc
15.07.2014, 13:33
Hallo Fred,


das Problem ist bei dem Code, dass er nur das Feld "E13" verwendet und jede Zelle mit dem E13 Wert befüllt. Warum das so ist, kann ich nicht nachvollziehen.

Der angepasste Code ist:

Option Explicit
Public Sub kopieren(rng As String)
Dim wbZiel As Workbook

Set wbZiel = Workbooks.Open("Y:\isarcolor_Prog\generieren.xlsm")

wbZiel.Worksheets("Calcu Angebot").Range(rng).Value = ThisWorkbook.Worksheets("Calcu Angebot").Range(rng).Value

'weiterer Code

wbZiel.Close savechanges:=True
Set wbZiel = Nothing
End Sub


Sub CommandButton50_Click()
kopieren ("E13:E15,E2:E8,E49:E57,E22,E24:E25,E29,J22:J41,J44:J45,J47,J50:J55,P13:P16,O19:Q1 9,P22:P41,P44:P45,P50:P53,J13:J16,E109:E111,E118,E120,E121,E125,E145:E153")
End Sub

EarlFred
15.07.2014, 13:45
Hallo Andi,

mit wem redest Du?

Option Explicit
Public Sub kopieren(rng As String)
Dim wbZiel As Workbook
Dim fVarAdressen As Variant, i As Long

fVarAdressen = Split(rng, ",")

Set wbZiel = Workbooks.Open("Y:\isarcolor_Prog\generieren.xlsm")

For i = LBound(fVarAdressen, 1) To UBound(fVarAdressen, 1)
wbZiel.Worksheets("Calcu Angebot").Range(fVarAdressen(i)).Value = ThisWorkbook.Worksheets("Calcu Angebot").Range(fVarAdressen(i)).Value
Next i
'weiterer Code

wbZiel.Close savechanges:=True
Set wbZiel = Nothing
End Sub


Sub CommandButton50_Click()
kopieren ("E13:E15,E2:E8,E49:E57,E22,E24:E25,E29,J22:J41,J44:J45,J47,J50:J55,P13:P16,O19:Q1 9,P22:P41,P44:P45,P50:P53,J13:J16,E109:E111,E118,E120,E121,E125,E145:E153")

End Sub

Den Rest kapier ich immer noch nicht. Scheint ja auch kein Problem zu sein, wenn es eine verständliche Erläuterung nicht wert ist.

Grüße
EarlFred

isarc
22.07.2014, 07:33
Hallo EarlFred,

jetzt funktioniert alles, auch das zweite Sheet wird kopiert. (Habe ich noch nachträglich eingebaut)

Den Code verstehe ich soweit recht gut...
Allerdings tu ich mich noch schwer diesen selbst zu schreiben.

Hast du irgend einen Trick oder eine Gedankestütze?

Gruß
Andi