Frage

Ich habe zwei Tabellenkalkulationen...Wenn eines auf eine bestimmte Weise geändert wird, möchte ich, dass ein Makro ausgeführt wird, das das zweite auf die entsprechende Weise ändert.Ich habe das Ereignis, auf das ich reagieren muss (die Änderung einer Zelle in einer bestimmten Spalte), bereits isoliert. Ich kann einfach keine konkreten Informationen zum Zugriff und zur Änderung einer anderen Tabelle finden (diese Tabelle befindet sich in einem anderen LAN). auch teilen...der Benutzer hat jedoch Zugriff auf beides).

Jede Hilfe wäre großartig.Referenzen dazu oder ähnliches sind ebenso gut wie konkrete Codebeispiele.

War es hilfreich?

Lösung

In Excel würden Sie wahrscheinlich einfach Code schreiben, um das andere Arbeitsblatt zu öffnen, es zu ändern und dann die Daten zu speichern.

Sehen dieses Tutorial Für mehr Information.

Ich muss mein VBA später bearbeiten, also tun Sie so, als wäre es Pseudocode, aber es sollte ungefähr so ​​aussehen:

Dim xl: Set xl = CreateObject("Excel.Application")
xl.Open "\\the\share\file.xls"

Dim ws: Set ws = xl.Worksheets(1)
ws.Cells(0,1).Value = "New Value"
ws.Save

xl.Quit constSilent

Andere Tipps

Sie können eine Tabelle in einer einzelnen Zeile öffnen:

Workbooks.Open FileName:="\\the\share\file.xls"

und bezeichnen Sie sie als aktive Arbeitsmappe:

Range("A1").value = "New value"

Nachdem ich eine Weile damit herumgespielt hatte, stellte ich fest, dass der Michael-Pseudocode am nächsten kam, aber so habe ich es gemacht:

Dim xl As Excel.Application
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open "\\owghome1\bennejm$\testing.xls"
xl.Sheets("Sheet1").Select

Dann manipulieren Sie das Blatt ...vielleicht so:

xl.Cells(x, y).Value = "Some text"

Wenn Sie fertig sind, verwenden Sie zum Abschluss diese Zeilen:

xl.Workbooks.Close
xl.Quit

Wenn Änderungen vorgenommen wurden, wird der Benutzer aufgefordert, die Datei zu speichern, bevor sie geschlossen wird.Es gibt vielleicht eine Möglichkeit, automatisch zu speichern, aber diese Methode ist tatsächlich besser, also lasse ich es so, wie es ist.

Vielen Dank für all die Hilfe!

Kopieren Sie Folgendes in Ihr ThisWorkbook Objekt, um auf bestimmte Änderungen zu achten.In diesem Fall, wenn Sie einen numerischen Wert auf einen anderen numerischen Wert erhöhen.

Hinweis:Sie müssen ersetzen Workbook-SheetChange Und Workbook-SheetSelectionChange mit einem Unterstrich.Ex: Workbook_SheetChange Und Workbook_SheetSelectionChange Der Unterstrich wird im Markdown-Code maskiert.

Option Explicit
Dim varPreviousValue As Variant ' required for IsThisMyChange() . This should be made more unique since it's in the global space.


Private Sub Workbook-SheetChange(ByVal Sh As Object, ByVal Target As Range)
  ' required for IsThisMyChange()
  IsThisMyChange Sh, Target
End Sub

Private Sub Workbook-SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  '  This implements and awful way of accessing the previous value via a global.
  '  not pretty but required for IsThisMyChange()
  varPreviousValue = Target.Cells(1, 1).Value ' NB: This is used so that if a Merged set of cells if referenced only the first cell is used
End Sub

Private Sub IsThisMyChange(Sh As Object, Target As Range)
  Dim isMyChange As Boolean
  Dim dblValue As Double
  Dim dblPreviousValue As Double

  isMyChange = False

  ' Simple catch all. If either number cant be expressed as doubles, then exit.
  On Error GoTo ErrorHandler
  dblValue = CDbl(Target.Value)
  dblPreviousValue = CDbl(varPreviousValue)
  On Error GoTo 0 ' This turns off "On Error" statements in VBA.


  If dblValue > dblPreviousValue Then
     isMyChange = True
  End If


  If isMyChange Then
    MsgBox ("You've increased the value of " & Target.Address)
  End If


  ' end of normal execution
  Exit Sub


ErrorHandler:
  ' Do nothing much.
  Exit Sub

End Sub

Wenn Sie auf dieser Grundlage eine andere Arbeitsmappe ändern möchten, würde ich darüber nachdenken, zuerst zu prüfen, ob die Arbeitsmappe bereits geöffnet ist ...Oder noch besser: Entwerfen Sie eine Lösung, die alle Ihre Änderungen bündelt und auf einmal durchführt.Es kann schmerzhaft sein, ständig eine andere Tabellenkalkulation zu ändern, während Sie sich diese anhören.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top