onlyrom の回答履歴

全624件中101~120件表示
  • 範囲を他のシートに値を複写したい

    bista excel2007でマクロを作成している超初心者です。 AシートのD2からN20までを、次のシートの同じセルに、値を張り付けるマクロを教えていただきたいです。Aシートの選択範囲をBシートにも適用したいのですが・・・。

  • 各ブックの集計値を自動的に他のブックに総合計として表示させたい。

    エクセルで各ブックの集計値を他のブックに集計したいのですが、フォルダを移動させると数値が違ってしまう。どうすればいつ見ても正しい集計値を見れるか教えて下さい。 現在1つのファイルの中にある、ブック1・2・3にそれぞれ数値を入力して合計値をブック3の別シートに合計表示させていますが、同じブックのシート間の集計ではないため、毎回数値が変わってしまい、その都度計算式を(=ブック1 D60+ブック2 d80+・・・など)を入れなおしています。 間違いなく集計できる方法を教えて下さい。ちなみに全くの初心者なので細かく説明していただけると有難いです。 VBAで検索して下記を見つけ、セル範囲やシート名など変更して試してみましたが、内容がよくわからないため 変な数字がでてきました。初心者にはやはり無理でしょうか? Sub Test() Dim MyName As String, wb As Workbook On Error Resume Next MyName = Dir(ThisWorkbook.Path & "\*.xls", vbNormal) Do While MyName <> ""   If UCase(MyName) <> UCase(ThisWorkbook.Name) Then    Application.ScreenUpdating = False    Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & MyName)    ThisWorkbook.Worksheets("Sheet1").Range("A65536").End(xlUp) _      .Offset(1, 0).Value = wb.Worksheets("物件").Range("d90:k90").Value    wb.Close   End If   MyName = Dir Loop Application.ScreenUpdating = True End Sub

  • VBSでExcelのオープン確認

    VBSCRIPTでエクセルに書き込むものを作っているのですが・・・ エクセルが開きっぱなしの場合、同じシートが開いて書き込めなかったりなど有りその対策を考えています。 もし開いていたらMsgBoxを出して終了させてしまおうかと思うのですがエクセルが開いているかどうか確認できません・・・ どのようにしたらよいでしょうか? wbCount = objExcel.Workbooks.Count msgbox wbCount myFlag = False for i = 1 to wbCount if objExcel.Workbooks(i).Name = strFilename then myFlag = True Exit for end if next if myFlag = True then msgBox "Open" else msgBox "not Open" end if

  • 各ブックの集計値を自動的に他のブックに総合計として表示させたい。

    エクセルで各ブックの集計値を他のブックに集計したいのですが、フォルダを移動させると数値が違ってしまう。どうすればいつ見ても正しい集計値を見れるか教えて下さい。 現在1つのファイルの中にある、ブック1・2・3にそれぞれ数値を入力して合計値をブック3の別シートに合計表示させていますが、同じブックのシート間の集計ではないため、毎回数値が変わってしまい、その都度計算式を(=ブック1 D60+ブック2 d80+・・・など)を入れなおしています。 間違いなく集計できる方法を教えて下さい。ちなみに全くの初心者なので細かく説明していただけると有難いです。 VBAで検索して下記を見つけ、セル範囲やシート名など変更して試してみましたが、内容がよくわからないため 変な数字がでてきました。初心者にはやはり無理でしょうか? Sub Test() Dim MyName As String, wb As Workbook On Error Resume Next MyName = Dir(ThisWorkbook.Path & "\*.xls", vbNormal) Do While MyName <> ""   If UCase(MyName) <> UCase(ThisWorkbook.Name) Then    Application.ScreenUpdating = False    Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & MyName)    ThisWorkbook.Worksheets("Sheet1").Range("A65536").End(xlUp) _      .Offset(1, 0).Value = wb.Worksheets("物件").Range("d90:k90").Value    wb.Close   End If   MyName = Dir Loop Application.ScreenUpdating = True End Sub

  • 各ブックの集計値を自動的に他のブックに総合計として表示させたい。

    エクセルで各ブックの集計値を他のブックに集計したいのですが、フォルダを移動させると数値が違ってしまう。どうすればいつ見ても正しい集計値を見れるか教えて下さい。 現在1つのファイルの中にある、ブック1・2・3にそれぞれ数値を入力して合計値をブック3の別シートに合計表示させていますが、同じブックのシート間の集計ではないため、毎回数値が変わってしまい、その都度計算式を(=ブック1 D60+ブック2 d80+・・・など)を入れなおしています。 間違いなく集計できる方法を教えて下さい。ちなみに全くの初心者なので細かく説明していただけると有難いです。 VBAで検索して下記を見つけ、セル範囲やシート名など変更して試してみましたが、内容がよくわからないため 変な数字がでてきました。初心者にはやはり無理でしょうか? Sub Test() Dim MyName As String, wb As Workbook On Error Resume Next MyName = Dir(ThisWorkbook.Path & "\*.xls", vbNormal) Do While MyName <> ""   If UCase(MyName) <> UCase(ThisWorkbook.Name) Then    Application.ScreenUpdating = False    Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & MyName)    ThisWorkbook.Worksheets("Sheet1").Range("A65536").End(xlUp) _      .Offset(1, 0).Value = wb.Worksheets("物件").Range("d90:k90").Value    wb.Close   End If   MyName = Dir Loop Application.ScreenUpdating = True End Sub

  • VBSでExcelのオープン確認

    VBSCRIPTでエクセルに書き込むものを作っているのですが・・・ エクセルが開きっぱなしの場合、同じシートが開いて書き込めなかったりなど有りその対策を考えています。 もし開いていたらMsgBoxを出して終了させてしまおうかと思うのですがエクセルが開いているかどうか確認できません・・・ どのようにしたらよいでしょうか? wbCount = objExcel.Workbooks.Count msgbox wbCount myFlag = False for i = 1 to wbCount if objExcel.Workbooks(i).Name = strFilename then myFlag = True Exit for end if next if myFlag = True then msgBox "Open" else msgBox "not Open" end if

  • Vistaでエクセルのマクロがエラーになります

    XPのSP3でエクセル2000を使っていました。 今回、Vistaに替えて、今まで使っていたエクセル2000をインストールしました。 ワークシートの印刷はUSBで接続したエプソンG700で可能なのですが、下記のVBAを実行する時点でエラーとなり、「マイクロソフトエクセルで問題が発生しました」と表示され、エクセルそのものが終了してしまいます。 If kensu <= 23 Then Range("l39:r82").Select ActiveSheet.PageSetup.PrintArea = "l39:r82" ActiveWindow.SelectedSheets.PrintOut copies:=2 End If 印刷は、条件によりこの Range 以外のセル範囲も選択して印刷します。 このVBAが動かないので、日常事務が出来なくなっています。 止む無くXPを再度登場させ、使わざるを得ない状況に追い込まれています。 解決策をご教示頂きたく、お願いします。

  • Excelマクロ 複数のシートそれぞれで計算

    マクロの勉強を始めて間もない初心者です。 手持ちの解説書やネットで探してみたのですが解決できなかったので質問させてください。 計算式を手打ちで入力する手間を省くため、コードを書きました。 (不要かもしれませんが、一応記してみます。) sub 計算() dim 行番号 as integer for 行番号 = 10 to 46 cells(行番号,4).select with activecell .value=.offset(-2,0).value-.offset(-1,0) .offset(1,0).select end with next end sub マクロを実行すると、1枚目のシートでのみ、この計算がなされます。 が、私はこの計算を、複数の(もしくは全ての)シートで行いたいと考えています。 シートのフォーマットは全く同じで、入力してある数値が違うだけです。 シートが20枚以上あり、1枚ずつ選択して同じコードを書くには、コピー&ペーストを使うにしてもしんどいので、検索してみたのですが。。 調べて試してみた sheets.select や、 sheets(array("シート名1","シート名2"…).select では、セル値が異なるにもかかわらず、シート1の計算結果が以降のシートにも反映されてしまいました。 コードは共通でも各シートで独立した計算結果を導くには、どうすれば良いのでしょうか? お詳しい方、ご教示くださいますようよろしくお願い致します。

  • 自動的にリスト内容が表示されるようになるには?

    教えてください。エクセル2003を使用しています。表を作成する時に、あるセルで、リストから選ぶようになっているのですが、リストから選択する際に、セル右の下ボタンを押さないとそのリスト内容は出てきませんよね?できればこの作業をなくすようにしたいのですができますでしょうか?具体的に言うと、個人病院で使う処方箋を作っているのですが、「1日2回内服」とか「3回内服」というのを薬ごとに書くという項目です。ですから1枚のシートにいくつもの薬が出てきます。ちなみに自分はVBA/マクロといったものは使えません。よろしくお願いします。

  • Excelマクロ 複数のシートそれぞれで計算

    マクロの勉強を始めて間もない初心者です。 手持ちの解説書やネットで探してみたのですが解決できなかったので質問させてください。 計算式を手打ちで入力する手間を省くため、コードを書きました。 (不要かもしれませんが、一応記してみます。) sub 計算() dim 行番号 as integer for 行番号 = 10 to 46 cells(行番号,4).select with activecell .value=.offset(-2,0).value-.offset(-1,0) .offset(1,0).select end with next end sub マクロを実行すると、1枚目のシートでのみ、この計算がなされます。 が、私はこの計算を、複数の(もしくは全ての)シートで行いたいと考えています。 シートのフォーマットは全く同じで、入力してある数値が違うだけです。 シートが20枚以上あり、1枚ずつ選択して同じコードを書くには、コピー&ペーストを使うにしてもしんどいので、検索してみたのですが。。 調べて試してみた sheets.select や、 sheets(array("シート名1","シート名2"…).select では、セル値が異なるにもかかわらず、シート1の計算結果が以降のシートにも反映されてしまいました。 コードは共通でも各シートで独立した計算結果を導くには、どうすれば良いのでしょうか? お詳しい方、ご教示くださいますようよろしくお願い致します。

  • Excelマクロ 複数のシートそれぞれで計算

    マクロの勉強を始めて間もない初心者です。 手持ちの解説書やネットで探してみたのですが解決できなかったので質問させてください。 計算式を手打ちで入力する手間を省くため、コードを書きました。 (不要かもしれませんが、一応記してみます。) sub 計算() dim 行番号 as integer for 行番号 = 10 to 46 cells(行番号,4).select with activecell .value=.offset(-2,0).value-.offset(-1,0) .offset(1,0).select end with next end sub マクロを実行すると、1枚目のシートでのみ、この計算がなされます。 が、私はこの計算を、複数の(もしくは全ての)シートで行いたいと考えています。 シートのフォーマットは全く同じで、入力してある数値が違うだけです。 シートが20枚以上あり、1枚ずつ選択して同じコードを書くには、コピー&ペーストを使うにしてもしんどいので、検索してみたのですが。。 調べて試してみた sheets.select や、 sheets(array("シート名1","シート名2"…).select では、セル値が異なるにもかかわらず、シート1の計算結果が以降のシートにも反映されてしまいました。 コードは共通でも各シートで独立した計算結果を導くには、どうすれば良いのでしょうか? お詳しい方、ご教示くださいますようよろしくお願い致します。

  • EXCEL VBA 転記 条件分岐 新規転記 上書転記 プログラム

    いつも御世話になっております。 以下のことをしたいのですが、詰まってしまいました。 皆様の力をお借りしたいと思い、書き込ませていただきます。 ・ボタン1をクリックすると、base(転記元)のG列に書かれた事項と同一のシート(転記先)へ転記する(各シートA,B,Cへ転記) ・転記先のE列を見て、既存のものであれば、上書きする ・転記先のE列を見て、新規のものであれば、空いている行を探し転記する。 (例) base(転記元シート) E1|F1|G1 名前 収入 シート先 月曜 50 A 火曜 100 A 木曜 150 C 土曜 50 A 日曜 100 B 水曜 150 A 金曜 10 C 転記実行前 A(転記先シート) E1|F1|G1 名前 収入 シート先 月曜 A 火曜 A 土曜 A 転記実行後 A(転記先シート) E1|F1|G1 名前 収入 シート先 月曜 50 A 火曜 100 A 土曜 50 A 水曜 150 A 以下に作成したプログラムを記述します。 が、IF文に関するエラーが生じております。 Sub ボタン1_Click() Dim dstSheet As Worksheet Dim srcRow As Long Dim dstRow As Long Dim name As Integer Dim obj As Object Set srcSheet = Sheets("base") For srcRow = 2 To srcSheet.Range("G" & Rows.Count).End(xlUp).Row '元シートのデータ範囲で繰り返し(シート先は必須なのでG列でチェック) If srcSheet.Range("G" & srcRow).Value <> "" Then '(転記先シート名)が空白でない場合に実行(1) Set dstSheet = Sheets(srcSheet.Range("G" & srcRow).Value) 'シート取得(1) name = Sheets(srcSheet.Range("E" & srcRow).Value) '名前を取得(1) Set obj = Worksheets(dstSheet).Cells.Find(name) '名前を転記先の中で検索(1) End If '(1)の終了 If obj Is Nothing Then '検索でかからなかったら、新たに空白の行を見つけて転記元から転記先へ転記する(3) '以下3行問題点???? dstRow = dstSheet.Range("G" & Rows.Count).End(xlUp).Row + 1 '転記先行取得 If dstSheet.Range("E2") = "" Then dstRow = 1 '質問で転記先には1行目からなので、それに対応 dstSheet.Range("E" & dstRow).Resize(1, 3).Value = srcSheet.Range("E" & srcRow).Resize(1, 3).Value 'データ転記 End If Else '検索でかかったら、該当の行のアドレスを割り出し、特定の範囲を上書きする。(4) lngYLine = obj.Row intXLine = obj.Column With Sheets(dstSheet) '検索でかかったら、該当の行のアドレスを割り出し、特定の範囲を上書きする。(4) dstSheet.Range("E" & lngYLine).Resize(1, 3).Value = srcSheet.Range("E" & srcRow).Resize(1, 3).Value 'データ転記(4) End If '(3),(4)の終了 Set obj = Nothing 'Objの初期化 Next End Sub

  • VBAで月の最終日をだす方法

    各々の月の最終日を求める方法が分かるかたいましたらよろしくおねがいします。 色々試してみているのですが、動作しません… Label91 = DateSerial(Year(Now()), Month(Now()) + 1, 0) 200X年X月XX日 という表示方法ではなく、 XX日 だけ、つまり日付だけの数値がほしいんです。 知っておられる方いましたらよろしくお願いします。 ちなみに Label92.Caption = Day(dateEnd) これは最終日を求める方法ではないのでしょうか?? 今月で試してみたら”30”とでました。今月は31日まであるので、これは最終日ではないのかな??と…

  • VBA 型が一致しないエラー

    お世話になります。 早速ですが、 2003で作ったというexcelファイルを貰い、 動かしたところ、標題のようなエラーが出ます。 確認したところ作成環境は、 WindowsXPSP2、excel2003 そして、私の環境はWindows98SE、excel97です。 どのようなことでしょうか。 For Each minus In Sheets("結果").Range("m5:m59")    If minus < 0 And minus.Interior.ColorIndex <> 3 Then      With minus.Interior      .ColorIndex = 3      .Pattern = xlSolid      .PatternColorIndex = xlAutomatic    End With      End If     Next (申し訳ありません、見苦しさはお許し下さい) の If minus < 0 And minus.Interior.ColorIndex <> 3 Then でエラーになります。 型は「数値」で問題ないように思うのですが。 足らなければ指摘下さい、調べて追加します。 宜しくお願いします。

  • EXCEL VBA 文字 アドレス 検索 消去 セル

    こんにちは。 EXCELの中にボタンを設置して以下のような動作をさせたいと思っておりますが、うまくいきません。 どのように改良すればよろしいでしょうか? 1.「end」の文字を検索し、そのセルのアドレスを取得する 2.取得したアドレスの行に関する値から一つ引いた値を計算で求める。例えばendがA10にあれば、A9とする 3.次にA3からA9までの範囲を消去する。 以下が自作したプログラムです。 Sub ボタン1_Click() Dim srcSheets As Worksheet Dim sinki As Integer sinki = MsgBox("データを消去しますか", vbYesNo) Select Case sinki Case vbYes '選択肢 Dim lngYLine As Long Dim intXLine As Integer Set Obj = Worksheets("Sheet2").Cells.Find("end") 'Sheet2の中でendを検索する。セルの場所を特定する。 If Obj Is Nothing Then MsgBox "endが見つかりません" Else lngYLine = Worksheets("Sheet2").Cells.Find("end").Row intXLine = Worksheets("Sheet2").Cells.Find("end").Column lngYLine = lngYLine - 1 End If With Sheets("Sheet2").Range("A3:intXLine+lngYLine").ClearContents End With End Select End Sub

  • excel 行を追加した場合のSUM関数の変化について

    excel2000を使用しています。 とあるセル、例えばC1~C5には、そのセルと同列のA、Bの和が入っているとします(例、=A1+B1)。 C6には、さらにC1からC5の合計値が入っていたとします。(=SUM(C1:C5) そこで質問ですが、 今回新たにC5とC6の間に行を一つ追加しC6がC7へシフト、=A6+B6とう計算式が入っているC6が新たに出来たとします。 その場合、C7の計算式が=SUMC1:C6と書き換わってくれません。 現状いちいち手で修正している状況です。 勝手に書き換わってくれる方法、もしくは何か良い方法はありませんでしょうか? よろしくお願いします。

  • (エクセルVBA)並び替えの方法

    この度はお世話になります。 エクセル2003で、選択したセル範囲(仮に「顧客一覧」とします)を並び替えるVBA(マクロ)を作成中です。 一応、下の方法で実現しました(リスト1)。しかし、「顧客一覧」の最下行だけ並び替えの対象からはずしたいのです。 理由は、別に行を挿入する必要があるためです(リスト2)。 行を挿入しても、そのデータが「顧客一覧」の範囲に含まれるようにしたいため、「顧客一覧」の最下行はブランクにしています。 しかし、リスト1では、ブランクの行も並び替えの対象になってしまい不都合が生じます。 セル範囲のうまい指定方法を教えていただければ幸いです (リスト1の修正をお願いします)。 '------------------------------- 'リスト1  選択範囲を並び替える '------------------------------- Sub 顧客一覧の並べ替え() Dim rowsCount As Long '表の現在行数 '行数の取得 rowsCount = Range("顧客一覧").Rows.Count '並び替える Range("顧客一覧").Sort key1:=Range("顧客一覧").Cells(1, 1), _ Order1:=xlAscending, Header:=xlGuess End Sub ------------------------------- 'リスト2  行を追加する '------------------------------- Sub 顧客の追加() Dim rowsCount As Long '表の現在行数 '行数の取得 rowsCount = Range("顧客一覧").Rows.Count '最下行に行を挿入 Range("顧客一覧").Cells(rowsCount, 1).EntireRow.Insert End Sub ※セル範囲「顧客一覧」は、初期値は B5:F10 です(A列はブランク)。 ※B列に顧客名(C~F列は住所電話番号等)を入力します。 ※並び替えの基準は「列B」/昇順 です。 ※行の挿入は最下行に行います(リスト2)。 以上、どうぞよろしくお願い致します。

  • EXCEL VBAで特定のセルの値による判定について

    すいません、EXCEL VBAで質問があります。 A1~A9 空欄 A10 "赤" A11~A16 空欄 A17 "青" A18~A21 空欄 A22 "青" A23~A35 空欄 A36 "赤" ・・・ A列の1000行までの間にランダムに赤か青の値が入っています。 A列の空欄のセルについて、下のセルを見ていき、 最初に来る値が赤であれば、それまでの空欄に"りんご"、青であれば"みかん"という値を入れる処理をVBAでやるにはどうしたらいいのでしょうか。 上の例でいうと、A1~A9及びA23~A35のセルには"りんご"、A11~A16及びA18~A21のセルには"みかん"と入ります。 do until~loopやfor~nextでやろうとしましたがどうにもうまくいきません。 よろしくお願いいたします。

  • VBAで画像を表示する方法

    VBA初心者です。ExcelのVBAでプログラミングの練習をしています。 早速ですが質問させてください。 ユーザーフォーム上にコマンドボタンをクリックすることにより画像を表示させることはできるのですが、これをユーザーフォームを開いた瞬間に自動的に表示させる方法はないのでしょうか? ちなみに現在は以下のようにしています。 Private Sub CommandButton1_Click() Image1.Picture = LoadPicture(" ") End Sub インターネットで調べてみても見つからないので質問させてもらいました。分かりにくい説明でしたらすみません。

  • VBA 検索して一致したセルへジャンプさせたい

    Excelにて、シート1のA列とシート2のA列のデータにNoを入れます。 シート1のA列のNoをクリックすると、シート2のA列の同じNoにジャンプするマクロを組みたいです。 現在組んでいるマクロは、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Sht As Worksheet Dim Rng1 As Range Dim Rng2 As Range Dim FindCell As Range Set Sht = Worksheets("シート2") Set Rng1 = Range("A2:A100") Set Rng2 = Sht.Range("A2:A100")If Intersect(Target, Rng1) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub Set FindCell = Rng2.Find(Target.Value) If Not FindCell Is Nothing Then Application.Goto Reference:=FindCell, Scroll:=False End If End Sub です。 一応マクロは実行されますが、そうすると、シート1のA列の編集(Noを追加したり変更したり・・・)できません。 編集や変更もできて、検索マクロも実行できるというマクロの組み方はありますでしょうか?