Win98 FirstEdition
VB6 SP3
Excel97 SR1

上記の環境において、下記のソースのように、VBからExcelを起動してデータを出力した際、Excelのブックを閉じると、「保存しますか?」の「はい」「いいえ」関わらず、あるいはブックをセーブした後閉じても、Excelが異常終了してしまいます。
ブックではなく、Excel自体を閉じた場合は全く問題ありません。

どなたか対処法をご存じな方いらっしゃいませんか?

Dim objXls As Object
Dim objBook As Object
Dim objSheet As Object

Set objXls = CreateObject("Excel.Application")
objXls.Workbooks.Add
objXls.Visible = False
Set objBook = objXls.ActiveWorkbook
Set objSheet = objBook.Worksheets(1)

(中略)
objXls.Visible = True

このQ&Aに関連する最新のQ&A

A 回答 (3件)

objXls.Visible = True の後に


objXls.UserControl = True を入れてみましょう。
自信はないのですが。
あと、VBのSP5とOffice97SR2を入れましょう。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
しばらく、ネットにアクセスできない環境におりましたので、ご返答が遅れました。

実は、質問の投稿の直後に、下記の米国MS社の対応策(英語)を見つけまして解決しておりました。
おっしゃる通りの原因・対処法でした。

http://support.microsoft.com/support/kb/articles …

お礼日時:2001/10/10 14:15

私も類似の現象で困っています。

便乗質問ですが、参考になれば。
VB6で、
Dim wkbObj As Workbook
Sub main()
 newdata = InputBox("A1に入力するデータをどうぞ")
Set wkbObj = GetObject("C:\WINDOWS\デスクトップ\adodata.xls")
wkbObj.Worksheets(1).Range("A1").Value = newdata
wkbObj.Close
End Sub

これでExcelを起動せずにadodata.xlsの内容を書き換えたところ、
次にExcelで開いても開かず、エラー表示も無い状態になります。
仕方無いので、IEからファイルを開くで開くとExcelが起動してadodata.xlsが
開きます。これを上書き保存すると、Excelで開いても見えるようになります。
なぜか、どうすれば良いか判らず、Gooで質問しようとしていたところです。
    • good
    • 0

異常終了が解消するかどうかは分かりませんが、


使用済オブジェクトを明示的にNothingしてますか?(Excelに限らず)
アプリケーションを終了させても、Excel自体のProcessが
システムに残ったままになっているとおもいます。
そのままだと実行する度にリソースを累積的に消費してまいます。

Set objSheet = Nothing
Set objBook = Nothing
Set objXls = Nothing
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
原因は#1の通りでした。

Set objSheet = Nothing
Set objBook = Nothing
Set objXls = Nothing

については、これを入れても現象は変わりませんのであえて、省略して問題カ所を最小限で書かせていただきました。

お礼日時:2001/10/10 14:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qexcelのマクロでrangeの選択がうまくいきません。

excelのマクロでrangeの選択がうまくいきません。
以下のマクロをsheet2に書きました。testcopyは動きますが、testcopy2は動きません。なぜなのでしょうか。どうすればいいのでしょうか。それ以外のマクロの部分との関係から、cellsを使い、数字を使ってrangeの処理をしたいのです。よろしくお願いします。

Sub testcopy()
Worksheets("sheet1").Range("B3:C10").Copy
Worksheets("sheet2").Range("e5").Select
ActiveSheet.Paste
End Sub

Sub testcopy2()
Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy
Worksheets("sheet2").Range("e5").Select
ActiveSheet.Paste
End Sub

Aベストアンサー

>testcopyは動きますが、testcopy2は動きません

testcopyは「動作したり、しなかったりする」が正しい表現です。
  要するに今回testcopyが動いたのは▼たまたま▼ということです。

testcopy2 は当然ながらエラーになります。
何れにしろ、両方ともに問題があるということです。
その問題点は2つあります。

(1)アクティブでないシートのセルはSelect(Activate)できない
(2)複数のシートを扱うときのセルの参照は
   そのセルがどのシートのセルなのか明示する必要がある


これを踏まえて、、、、
---------------
●testcopy●

これが動作するのは
Sheet【2】がアクティブな状態で実行する場合です

Sheet【1】がアクティブな状態で実行すると
  Worksheets("sheet2").Range("e5").Select
ここで、問題点(1)の理由によりエラー。
で、先ずシートを選択、次にセルを選択と2段階にしないといけません。

  Worksheets("sheet2").Select
  ActiveSheet.Range("E5").Select

----------------
●testcopy2●

▼Sheet【1】がアクティブな状態で実行
  testcopyと同じ場所、同じ理由でエラー

▼Sheet【2】がアクティブな状態で実行
  Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy
  ここで、問題点(2)により、エラー。
 
 Cellsの前にシートオブジェクトがないので
 Cells(3, 2), Cells(10, 3)はアクティブなSheet【2】のセルとみなされ
 (★実際はちょと違う場合もありますが今回はそう★)

 Worksheets("sheet1").Range(  ← Sheet【1】
 Cells(3, 2), Cells(10, 3))   ← Sheet【2】

このようにSheet【1】【2】が混在していることになり、エラー
で、Cellsの前にシートを付加してセルがどのシートのセルか明示してやる

Worksheets("sheet1").Range(Worksheets("sheet1").Cells(3, 2), Worksheets("sheet1").Cells(10, 3)).Copy
  
---------------------------------
で、質問者のコードを修正すると
'-------------
Sub testcopy()
 Worksheets("sheet1").Range("B3:C10").Copy
 With Worksheets("sheet2")
   .Select
   .Range("E5").Select
   .Paste
 End With
End Sub
'-------------

Sub testcopy2()
 With Worksheets("sheet1")
   .Range(.Cells(3, 2), .Cells(10, 3)).Copy
 End With
 With Worksheets("sheet2")
   .Select
   .Range("E5").Select
   .Paste
 End With
End Sub
'--------------

●ただ今回のような単純なコピーの場合は
 既出の回答にあるようにSelectなしで書くのがふうつです。
'-----------
Sub testcopy111()
 Worksheets("sheet1")
   .Range("B3:C10").Copy Worksheets("sheet2").Range("E5")
 End With
End Sub
'-----------
Sub testcopy222()
 Worksheets("sheet1")
  .Range(.Cells(3, 2), .Cells(10, 3)).Copy Worksheets("sheet2").Range("E5")
 End With
End Sub
'-----------

今回の件は重要事柄ですので覚えておきましょう。
以上です。
 

>testcopyは動きますが、testcopy2は動きません

testcopyは「動作したり、しなかったりする」が正しい表現です。
  要するに今回testcopyが動いたのは▼たまたま▼ということです。

testcopy2 は当然ながらエラーになります。
何れにしろ、両方ともに問題があるということです。
その問題点は2つあります。

(1)アクティブでないシートのセルはSelect(Activate)できない
(2)複数のシートを扱うときのセルの参照は
   そのセルがどのシートのセルなのか明示する必要がある


これを踏まえて、、、、
-...続きを読む

QDim x As Integer = 0

いつもお世話になっております。

只今、本に記載してあるソースコードを手入力しています。
標記のように入力したら、『コンパイルエラー 修正候補:ステートメントの最後』というエラーが出ました。

(1)このエラーは無視してもよいのでしょうか?
(2)そもそも、変数の宣言文の後ろに=0をつけている意味がわかりません。当方VB初心者です。

よろしくお願いいたします。

Aベストアンサー

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsugi.ed.jp/vba4graduate/vba_hensuusyokika.htm
ーーー
定数のConstであればこういう書き方はOK
Sub test01()
Const x As Integer = 0
MsgBox x
End Sub
ーーー
VB.NETでは、OK
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x As Integer = 10
MsgBox(x)
End Sub
ーー
Javaでは可能であるようです
http://msugai.fc2web.com/java/var2.html
ーーーーー
>ろに=0をつけている意味がわかりません
宣言と同時に値を与える=初期化する

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsug...続きを読む

QRange("K" & TR).Formula = で、セルにマクロで式を書きたいのですが

よろしくお願いします。いつもgooの皆さんには大変お世話になっています
エクセルは2013です

わけあって、セルにマクロで式を書いています
例えば TRは行を表す変数ですが
Range("K" & TR).Formula = "=IFERROR(AY" & TR & ","""")" と書いたマクロの結果は
=IFERROR(AY43,"") という式がRange("K" & TR) に書かれます

それでは、いま、マクロで下記のように書いているコード(TRは行を表す変数です)
Range("Z" & i) = Range("Z" & i - 1) - Range("AG" & TR) * 10000 は
Range("Z" & i).Formula = 
で書く場合、=の右側をどう書いたら良いでしょうか

色々とやってみたのですが狙った式になりません

この場合 変数 i を使っているので、もしかしたら、そもそも無理なことでしょうか

うまく説明できていませんがよろしくお願いします

Aベストアンサー

No.1です。申し訳ありません大ボケな回答をしていましました。

要するに↓ってことですよね? また勘違いしていたらスミマセン。

Range("Z" & i).Formula = "=Z" & i - 1 & "-AG" & TR & " * 10000"

Qマクロで100マス計算! Dim i,j As Integer For i = 2 ToRang

マクロで100マス計算!

Dim i,j As Integer

For i = 2 ToRange(”A1”).End(xlDown).Row
For j=2 To Range(”B1”).End(xlToRight).Column

Cells(i,j).Value = Cells(i,1).Value * Cells(1,j).Value
Next j
Next i
Endsub

上記のように記述しましたが、
iの最終行が2となってしまっていますがなぜこのコードが間違っているのか分からないです。。どなたか教えていただけたら嬉しいです!

Aベストアンサー

確認してはいませんが…


>改行、スペースは実際にはきちんととっていますので気にしないでください
とのことなので、違っているのかもしれませんが、

>For i = 2 ToRange(”A1”).End(xlDown).Row
         ↓
 For i = 2 To Range(”A1”).End(xlDown).Row
で、うまくいきませんか?
100マス(10×10)と最初から決まっているので、範囲は 2 To 11 でも良いように思いますが…

改行、スペースなどが正しくなっているなら、Range(”A1”).End(xlDown).Rowの値が2以下になっている可能性が考えられます。(ということは、A1が空白セル、または、A3が空白セルなどなど・・)
A1が空白セルの場合は、
 For i = 2 To Range(”A2”).End(xlDown).Row
とするか、
 For i = 2 To 11
などとすることで、動作するのではないかと推測します。

QVBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗

マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。

マクロの内容は、任意の範囲をコピー、新規book追加し、
新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。

いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。
下記にマクロ内容全部記載します。
よろしくお願いします。

*********************************************************
*********************************************************
Sub 日報別ファイルに保存したい1()
Worksheets("日報").Range("A3:AF36").Copy
With Workbooks.Add
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells.Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

ApplicationDisplayAlerts = True '同名FILEが存在する場合'
ActiveWorkbook.SaveAs Filename:= _
"c:\日報\" & ActiveSheet.Range("J2") & "年" & ActiveSheet.Range("l2") & "月" & ActiveSheet.Range("n2") & "日_日報.xls" _
, FileFormat:=xlNormal
.Close file


End With

End Sub

マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。

マクロの内容は、任意の範囲をコピー、新規book追加し、
新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。

いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。
下記にマクロ内容全部記載します。
よろしくお願いします。

***********...続きを読む

Aベストアンサー

こんにちは。

>結果、「ThisWorkbook」上の下記のマクロを削除すると、正常に動きだしました。
それは、Copy 範囲が、消えてしまうことで、PasteSpecial が利かなくなってしまうからです。

まず、シート名の長いコードは、これだけでよいはずです。

Private Sub Workbook_Activate()
 Select Case StrConv(Trim(ActiveSheet.Name), vbNarrow)
 Case "1" To "30", "日報"
  Application.Calculation = xlCalculationManual
 End Select
End Sub


-------------------------------------------
''もし、そのままでダメでしたら、 ' Application.EnableEvents = False 'イベントの介入を阻止する のところのコメント・ブロック('コードの手前のアポストロフィ)を外して、再度試してみてください。

Sub 日報別ファイルに保存したい2()
Dim myRng As Range
Set myRng = Worksheets("日報").Range("A3:AF36")
 ' Application.EnableEvents = False 'イベントの介入を阻止する

With Workbooks.Add
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
  Application.CutCopyMode = False
 
 ApplicationDisplayAlerts = True '**これは、そのままでは必要ないはずです。'
 
 ActiveWorkbook.SaveAs Filename:="c:\日報\" & ActiveSheet.Range("J2") & "年" & _
                 ActiveSheet.Range("l2") & "月" & _
                 ActiveSheet.Range("n2") & "日_日報.xls", _
                 FileFormat:=xlNormal
 .Close file
End With
Set myRng = Nothing
'Application.EnableEvents = True 'イベントマクロの活動を戻す

End Sub

こんにちは。

>結果、「ThisWorkbook」上の下記のマクロを削除すると、正常に動きだしました。
それは、Copy 範囲が、消えてしまうことで、PasteSpecial が利かなくなってしまうからです。

まず、シート名の長いコードは、これだけでよいはずです。

Private Sub Workbook_Activate()
 Select Case StrConv(Trim(ActiveSheet.Name), vbNarrow)
 Case "1" To "30", "日報"
  Application.Calculation = xlCalculationManual
 End Select
End Sub


-----------------------------------------...続きを読む

QMicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。

最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。

ここで質問させてください。
・なぜ配列を意味するDimension文が変数の宣言なのか?
・どのバージョンのBasicからDim文の意味が変わったのか?

私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

Aベストアンサー

VISUAL BASIC のDimは ディメンジョンの略です。
私の経験ではVB2.0時代からありました。

配列0を考えた場合変数とおなじであるからだとおもいます

QExcelマクロでRange("A1:A5,C1:C5")をCellsで書きたいのですが

マクロ初心者です。
Excelマクロでグラフを作成するときに、元データを指定する所で、
Source:=Range("A1:A5,C1:C5")とするような場合、
「A1」とかアルファベットでの番地指定ではなく、
Cellsを用いて書きたいのです。

Source:=Range("A1:A5")であれば、
Source:=Range(Cells(1, 1), Cells(5, 1))と書けばいいことは分かるのですが、範囲指定を複数にする場合が分からないのです。

よろしくお願いします。

Aベストアンサー

Unionを使用したらできると思います。

Source:=Union(Range(Cells(1, 1), Cells(5, 1)), Range(Cells(1, 3), Cells(5, 3)))

今Excelがインストールされてないパソコンで作業していないので確認はしていないのですが・・・。

よかったら参考にして下さい

QEXCEL VBA すべてのブックを上書き保存して閉じる

Win8 Excel2010です。
以下のEXCEL VBA の文章を教えて下さいm--m




すべてのエクセルウィンドウを、最小化した状態で(見えなければ良い)、UserForm2.Showしながら、上書き保存してを閉じる。
その際、閉じる前に以下のマクロを実行する。
With ActiveWindow

'''罫線を表示
.DisplayGridlines = True

'''行列番号を表示
.DisplayHeadings = True

'''アウトライン記号を表示
.DisplayOutline = True

'''シート見出しを表示
.DisplayWorkbookTabs = True

'''メニューを表示
Application.CommandBars("Worksheet Menu Bar").Enabled = True

'''ツールバーを非表示
For Each cb In Application.CommandBars
cb.Enabled = True

'''数式バーの非表示
Application.DisplayFormulaBar = True

'''ステータスバーの非表示
Application.DisplayStatusBar = True

Next
End With



宜しくお願いします。

Win8 Excel2010です。
以下のEXCEL VBA の文章を教えて下さいm--m




すべてのエクセルウィンドウを、最小化した状態で(見えなければ良い)、UserForm2.Showしながら、上書き保存してを閉じる。
その際、閉じる前に以下のマクロを実行する。
With ActiveWindow

'''罫線を表示
.DisplayGridlines = True

'''行列番号を表示
.DisplayHeadings = True

'''アウトライン記号を表示
.DisplayOutline = True

'''シート見出しを...続きを読む

Aベストアンサー

こんばんは。

もしかしたら思ったようにいかない可能性があります。
単純に考える人もいますが、長くやってみないと見えてこない部分もあるはずです。
私自身、こういうものは、知っているだけに気後れがしてしまいます。
簡単なことを難しく考えているようには見えますが、意外に、この種のものは、むつかしいです。
これを土台に、いろいろ試してみてください。

以下は、ユーザーフォームのコマンドボタンにつけるものです。

>すべてのエクセルウィンドウを、最小化した状態で(見えなければ良い)、

この部分は、どうするかお任せになります。
なせなら、それは、今回の質問内容とは別の問題のように思うからです。

以下は、おかしな部分があるような疑念がわくはずですが、以前、同様のものを何度も繰り返して、Excel 2007以上では、Excel のアプリケーションが終わらない現象があります。それで、このようなコードになりました。(別の掲示板では、この内容を間違いだと決めつけた人がいますが、Quit と Saveが逆にするのは、古くからの手法です)

また、名前を付けていないブックは、名前を付けて保存するか、捨ててしまうか、どちらかになります。
ThisWorkbookを最後にしないと、このような場合は、UserFormを立ち上げたままですと、途中で終了させると、ハングやクラッシュする可能性があります。

'//
Private Sub CommandButton1_Click()
 Dim wb As Workbook
 Dim fn As Variant
 For Each wb In Application.Workbooks
  If wb.Name Like "Book#*" Then
   fn = Application.Dialogs(xlDialogSaveAs).Show
   If Not VarType(fn) = vbBoolean Then
    wb.SaveAs fn
    wb.Close False
   Else
    wb.Close False
   End If
  ElseIf Not (wb.Name = ThisWorkbook.Name Or wb.Name Like "PERONAL.*") Then
   If wb.Saved = False Then
    wb.Save
   End If
   wb.Close False
  End If
 Next
 Call SettingBack(ThisWorkbook.Windows(1))
 If ThisWorkbook.Saved = False Then
  Application.Quit
  ThisWorkbook.Close True 'ここは、逆で可能なのです。
 Else
  Application.Quit
  ThisWorkbook.Close
 End If
 Application.Quit 'これでも閉じなければ、下のコードも活かしてください。
 'Application.Quit '予備
End Sub
Sub SettingBack(wb As Window)
  Dim cb As Object
  On Error Resume Next
  With wb.Windows(1)
    .DisplayGridlines = True '罫線を表示
    .DisplayHeadings = True '行列番号を表示
    .DisplayOutline = True 'アウトライン記号を表示
    .DisplayWorkbookTabs = True 'シート見出しを表示
    Application.CommandBars("Worksheet Menu Bar").Enabled = True 'メニューを表示
    For Each cb In Application.CommandBars 'ツールバー
      cb.Enabled = True
    Next
    Application.DisplayFormulaBar = True '数式バーの非表示
    Application.DisplayStatusBar = True 'ステータスバー
  End With
  On Error GoTo 0
End Sub
'//

こんばんは。

もしかしたら思ったようにいかない可能性があります。
単純に考える人もいますが、長くやってみないと見えてこない部分もあるはずです。
私自身、こういうものは、知っているだけに気後れがしてしまいます。
簡単なことを難しく考えているようには見えますが、意外に、この種のものは、むつかしいです。
これを土台に、いろいろ試してみてください。

以下は、ユーザーフォームのコマンドボタンにつけるものです。

>すべてのエクセルウィンドウを、最小化した状態で(見えなければ良い)、...続きを読む

Qエクセルのマクロ(range)について

マクロの作りと理解の方法について教えてください。

今、日報を作り直しています。
以前作成した方は、このように作っていました。


Worksheets("日報").Select
Range("Q7:Q23").Value = Range("U7:U23").Value
Range("S7:S59").Value = Range("V7:V59").Value
Range("A1").Select
MsgBox " 転写を終了しました。"
End Sub


マクロでは複数の行列を指定していますが、1行だけ表すと、
具体的な表とデータの変化の仕方とするとこのようになっています。

M    O    Q     S       U     V
個数 金額  累計個数 金額金額 (=M+Q) (=O+S)
0、   0、   100、   1000、    100、   1000 
1,初期状態

10、  100、  100、   1000、    110、   1100
2,個数を入力すると、計算式を入力してあるUとVの数が変わる

10、  100、   110、   1100、    120、   1200
3,マクロを実行すると、UとVの数がQとSに入力され、計算式を入力してあるUとVの数がさらに変わる。

0、   0、    110、   1100、   110、    1100
4,MとOの数をゼロ(クリア)にすると、計算式を入力してあるUとVの数が変わる。     


なかなか理解できないのは、Range("Q7:Q23").Value = Range("U7:U23").Valueの部分で、
2,の後にマクロを実行すると、U 110、V 1100がQ 100とS 1000に書き込まれることです。
通常の計算式だと=は対象となったセルをそのまま表示していると思うのですがのですが、
マクロに書いてある式だと3,のところでUとVの数をQとSに書き込んであります。
なぜ=なのにマクロでは一方のセルに数を書き込んでいるのでしょうか。
また、QやSをUやVへ書き込んでいないのでしょうか。

どなたか詳しく教えていただけると幸いです。

マクロの作りと理解の方法について教えてください。

今、日報を作り直しています。
以前作成した方は、このように作っていました。


Worksheets("日報").Select
Range("Q7:Q23").Value = Range("U7:U23").Value
Range("S7:S59").Value = Range("V7:V59").Value
Range("A1").Select
MsgBox " 転写を終了しました。"
End Sub


マクロでは複数の行列を指定していますが、1行だけ表すと、
具体的な表とデータの変化の仕方とするとこのようになっています。

M    O    Q     S...続きを読む

Aベストアンサー

プログラミング言語では、一般的に、
「=」は、右辺から左辺への「代入」
を意味します。

マクロ = Visual Basic = プログラミング言語
なので、Excelにおける「=」とは少し意味合いが違っています。

QCreateObjectで作成したExcelのプロセスを終了させたい。

VBからCreateObjectで作成したExcelのプロセスを終了させたいと考えています。
困っている点として、CreateObjectで作成したときにプロセスIDをどのように取得すれいいのかという点です。
宜しくお願いします。

環境
VB6.0+SP5
Windows2000+SP2
Excel2000

Aベストアンサー

VB5では、これでいいはずです。VB6でも同じでは?!

Dim ExcelObj As Excel.Application
:
:
Set ExcelObj = CreateObject("Excel.Application")
:
:
ExcelObj.ActiveWorkbook.Close (False)
ExcelObj.Quit
Set ExcelObj = Nothing


人気Q&Aランキング