ap_2 の回答履歴

全199件中181~199件表示
  • outlook VBA items(番号)取得

    OUTLOOK でマクロを組んでいます。 Folderの中の受信メールの数だけItem(1)~(10)といったようにありますが、現在開いているメール はこの番号の何番にあたるのかわかる方法はありますか?

  • Excel2007 ワークブックのプロパティ

    教えてください!! Excel2007の「ワークブックのプロパティ」で設定した情報はどこで活用できる情報なのでしょうか? 只今、MOSの試験勉強をしています。活用方法は範囲に入っていないようですが、使い方が気になります。 Wordで出てくるプロパティについては以前、教えて頂いたのですが、Excelとはメニューが違うので、どこから呼び出すのかがわかりません。 ご存知の方がいらっしゃったら、よろしくお願いたします<(_ _)>

  • EXCEL VBA 配列のIndex番号書きかわり

    こんばんは。 EXCEL VBA で困っております。 シートから配列にコピーさせると、ReDimで設定してあったIndex番号が なぜか替ってしまうらしいのです。 いろいろと検索してみましたが、どうしても見つからず、ここで質問させていただくことにしました。 下記のコードで確認してみてください。 Sub test() Dim A As Variant ReDim A(1 To 1, 0 To 4) For j = 0 To 4 A(1, j) = j Next j Range("A1:E1") = A MsgBox A(1, 0) 'ちゃんと機能して(1, 0)の位置で[0]と表示 'MsgBox A(1, 5) '←インデックスが有効範囲にありません A = Range("A1:E1") Range("A2:E2") = A 'MsgBox A(1, 0) 'さっき機能したのに今度はエラー MsgBox A(1, 1) '(1, 1)はセルでは2列目の[2]が取得されない MsgBox A(1, 5) 'さっきエラーになった(1, 5)は今度はエラーにならない End Sub なぜ、A(1 to 1, 0 to 4) が A(1 to 1, 1 to 5) と替ってしまうのか? シート範囲全体をいっぺんに配列に格納するとこういうことが起こるのが仕様なのか?? 自分の推測では、配列は[0]から始めることができますが、 シート上では[0]という開始位置を認識できないため、 Variant変数型のなかで自動的に書き換えちゃってくれてるのかな? なんて思ったりしました。 理由がわかる方、おりましたらご教授くださいませ。 また、どうしても、この2次元配列で、 てっとり早いこのコピーコードを使いセル範囲から配列へコピーさせて、 列方向へのIndexを (0 to 4)とさせたいのですが、 何かよい方法はありますでしょうか?? For文やEach文でひとつずつセルから配列へ格納という方法もあるかもしれませんが、 実際に打ち込んでいるコードは、行列ともかなり範囲が広いために、 処理時間を気にしてしまいます。 そこそこ使い慣れてきたのに、よもやこんなところで、躓くの!?といった心境です。 ご指南のほど、どうぞよろしくお願いいたします。

  • EXCELでスケジュール表を作成したい

    EXCELでスケジュール表を作成していたのですが、うまくセルの色付けが出来ず悩んでいます。 私のやりたい事を添付画像の例で説明します。 「予定開始」へ「2011/05/01」「AM」 「予定終了」へ「2011/05/02」「AM」 と入力します。 結果、セルの「AQ8」~「AS8」まで、自動で塗りつぶしを行いたいと考えています。 さらに、この自動動作をさせるためにいくつか制限事項があります。 以下に列挙致します。  1.マクロを使わない  2.条件付き書式を使う 進捗状況としては、セルの「AQ8」に条件付き書式を使用しており、 書式の設定は、「数式を使用して、書式設定するセルを決定」を選択し 「=AND(AND($X8-AQ$4=0,$AD8-AQ$4>=0),NOT($AB8="PM"))」という数式で セルの「AQ8」を塗りつぶすことができました。 また、セルの「AR8」には、上記と同じように 「=AND(AND($X8-AQ$4=0,$AD8-AQ$4>=0),NOT($AB8="AM"))」という数式で セルの「AR8」を塗りつぶすことができました。 ここからが、わからなくなってしまった点で、 「予定終了」の「2011/05/02」の判定はできていると思うのですが 「予定終了」の「AM/PM」の判定をどのように、数式に組み込めば良いのかわかりません。 考え方が根本的に間違っているのかすらわからない状況です。 是非、皆様のお力をご教授ください。 他に必要な情報等ございましたら、出来る限り提供致します。 よろしくお願いいたします。

  • エクセルファイルが重くなり、自動計算に時間がかかる

    OS: WindowsXP Pro SP3 Office: Microsoft Excel 2003 SP3 CPU: Pentium 2.8GHz メモリ: 2GB 社内の人から質問があり、困っています。 一つのエクセルファイルに複数の関数が組み込まれています。 一ファイル内に5~7シートあり、このファイル自体重たいファイルです。 また、関数の一部は外部サーバーから参照するものもあります。 これまで長年使っていたファイルなのですが、ある日をさかいに計算に時間がかかるようになりました。 計算は、自動計算で行っていましたが、これまで計算にかかる時間に負担は感じていませんでしたが、今はかなり時間がかかります。 仮想メモリを増やしたのですが、解消されません。 データは、1日1行増えて行きますので、過去半年分の数式を値ベースにしてデータ量を軽くすれば、 以前のように自動計算設定にしても問題なく更新されるのではないかと思い試したのですが、解消されませんでした。 仕方ないので今は自動計算ではなく、手動計算にて行っています。 参照している外部サーバーに関しては、何ら変更していませんし、社内ネットワークも変更は行っておりません。 これまで通り自動計算にして使用したいと思っています。 他の対策方法や、原因と思われるような事がありましたら、教えてください。 よろしくお願いします。

  • EXCELでスケジュール表を作成したい

    EXCELでスケジュール表を作成していたのですが、うまくセルの色付けが出来ず悩んでいます。 私のやりたい事を添付画像の例で説明します。 「予定開始」へ「2011/05/01」「AM」 「予定終了」へ「2011/05/02」「AM」 と入力します。 結果、セルの「AQ8」~「AS8」まで、自動で塗りつぶしを行いたいと考えています。 さらに、この自動動作をさせるためにいくつか制限事項があります。 以下に列挙致します。  1.マクロを使わない  2.条件付き書式を使う 進捗状況としては、セルの「AQ8」に条件付き書式を使用しており、 書式の設定は、「数式を使用して、書式設定するセルを決定」を選択し 「=AND(AND($X8-AQ$4=0,$AD8-AQ$4>=0),NOT($AB8="PM"))」という数式で セルの「AQ8」を塗りつぶすことができました。 また、セルの「AR8」には、上記と同じように 「=AND(AND($X8-AQ$4=0,$AD8-AQ$4>=0),NOT($AB8="AM"))」という数式で セルの「AR8」を塗りつぶすことができました。 ここからが、わからなくなってしまった点で、 「予定終了」の「2011/05/02」の判定はできていると思うのですが 「予定終了」の「AM/PM」の判定をどのように、数式に組み込めば良いのかわかりません。 考え方が根本的に間違っているのかすらわからない状況です。 是非、皆様のお力をご教授ください。 他に必要な情報等ございましたら、出来る限り提供致します。 よろしくお願いいたします。

  • 登録する行の変更

    以下のコードで「入力」シートのデータから「DB]シートに登録するんです。「DB」シートの一行目A1は題名ですが新しいデータに入ってくるとどんどん題名は下の行に下がっていく。 題名は固定し、新しいデータはA2から入ってくるようにしたいですがどこに変更すればいいかわからなくて困っています。(ExcelのVBAはまったくわかりません) よろしくお願いします。 Excel 2007 Sub 登録_Click() 'On Error GoTo Err_登録 Dim n As Integer '入力明細の数 Dim x As Long 'DBの検索範囲の最終行 Dim rng As Range '検索したセル Dim z As Long 'DBのデータの最終行 Dim tbl As Worksheet '[DB]シート Dim key As String '検索キー Dim from_key As Long '更新範囲(自) Dim to_key As Long '更新範囲(至) '警告メッセージ非表示 Application.ScreenUpdating = False Worksheets("入力").Activate Set tbl = Sheets("DB") z = tbl.Range("A1").CurrentRegion.Rows.Count Check_登録: key = Range("B2").Value If key = "" Then MsgBox "発注番号が未入力です。" Exit Sub End If '[発注番号]でソート tbl.Range("A1").Sort Key1:=tbl.Range("A1"), Header:=xlGuess '存在チェック x = tbl.Range("A1").End(xlDown).Row With tbl.Range("A1:A" & x) Set rng = .Find(key, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If Not rng Is Nothing Then MsgBox "既存の番号が存在します。" Exit Sub End If End With '明細行有無チェック n = WorksheetFunction.CountIf(Range("M46:M65"), "*") If n = 0 Then MsgBox "明細行がありません。" Exit Sub End If Add_登録: '空白行を省く Selection.AutoFilter Field:=14, Criteria1:="<>" 'コピー&貼り付け Range("A47:U66").Copy tbl.Range("A" & z + 1).PasteSpecial Paste:=xlPasteValues '[発注番号]でソート tbl.Range("A1").Sort Key1:=tbl.Range("A1"), Header:=xlGuess 'コピーモード解除 Application.CutCopyMode = False '空白行を省くを解除 Selection.AutoFilter Field:=14 'ブック保存 'ActiveWorkbook.Save '画面クリア Call 画面クリア '警告メッセージ表示 Application.ScreenUpdating = True Exit_登録: MsgBox "登録しました。" Exit Sub Err_登録: MsgBox "エラーが発生しました

  • Excelのセル変化イベント

    Excel2000及びExcel2010で動作させるVBAマクロを作成しております。 シート上にコマンドボタン配置し、データチェックを行うマクロを登録してあります。 任意のセルにデータを入力し、コマンドボタンを押下することで マクロが実行され、セルの内容をチェックし、不正があればセルを赤くします。 また新たにセルに値が入力されたときにはセルを白くしています。 ※セルに値が入ったことを認識するためにWorkbook_SheetSelectionChangeのイベントを利用しています。 基本的には問題なく動作するのですが、 下記の場合、Excel2000と2010で動作が異なって困っています。 ★手順 (1)任意のセルで”F2"キーを押下し、編集状態とする。 (2)そのままの状態でデータチェックのコマンドボタンを押下する。 【Excel2000の場合】 コマンドボタンが押せない。 【Excel2010の場合】 コマンドボタンが押せる。 このとき、データチェックのマクロがまず実行され、 セルの内容に不正がある場合は赤くなるが、 直後にWorkbook_SheetSelectionChangeイベントが発生し、 「新しい入力」と判断してセルがすぐに白くなってしまう。 =>一瞬セルが赤くなるがすぐに白くなる。 なんとかExcel2000と2010とで動作内容を合わせたいのです。 そこで、コマンドボタンが押下されたとき、 編集中のセルが存在すればマクロは実行しない・・・という方法を考えましたが、 「セルが編集中」であるかはどのようにして判断すればよいでしょうか?

  • EXCEL2010でセルが編集中かを判定する方法

    EXCEL2010でセルが編集中(ダブルクリックやF2が押下された状態)が わかる方法ってあるのでしょうか? VBAでマクロを作成しているのですが、 セルが編集中の場合はボタンを押下できないようにしたいのです。 EXCEL2000だと勝手にボタンが押下できない状態になっていますが、 EXCEL2010だとボタンが押せてしまい困っております。 ちなみにいろいろ調べたのですが、EXCEL2000ではセルが編集中かは わからないみたいです(私の調べ方が悪いかも知れませんが、、、) どなたがご教授願います。 よろしくお願いします。

  • 登録する行の変更

    以下のコードで「入力」シートのデータから「DB]シートに登録するんです。「DB」シートの一行目A1は題名ですが新しいデータに入ってくるとどんどん題名は下の行に下がっていく。 題名は固定し、新しいデータはA2から入ってくるようにしたいですがどこに変更すればいいかわからなくて困っています。(ExcelのVBAはまったくわかりません) よろしくお願いします。 Excel 2007 Sub 登録_Click() 'On Error GoTo Err_登録 Dim n As Integer '入力明細の数 Dim x As Long 'DBの検索範囲の最終行 Dim rng As Range '検索したセル Dim z As Long 'DBのデータの最終行 Dim tbl As Worksheet '[DB]シート Dim key As String '検索キー Dim from_key As Long '更新範囲(自) Dim to_key As Long '更新範囲(至) '警告メッセージ非表示 Application.ScreenUpdating = False Worksheets("入力").Activate Set tbl = Sheets("DB") z = tbl.Range("A1").CurrentRegion.Rows.Count Check_登録: key = Range("B2").Value If key = "" Then MsgBox "発注番号が未入力です。" Exit Sub End If '[発注番号]でソート tbl.Range("A1").Sort Key1:=tbl.Range("A1"), Header:=xlGuess '存在チェック x = tbl.Range("A1").End(xlDown).Row With tbl.Range("A1:A" & x) Set rng = .Find(key, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If Not rng Is Nothing Then MsgBox "既存の番号が存在します。" Exit Sub End If End With '明細行有無チェック n = WorksheetFunction.CountIf(Range("M46:M65"), "*") If n = 0 Then MsgBox "明細行がありません。" Exit Sub End If Add_登録: '空白行を省く Selection.AutoFilter Field:=14, Criteria1:="<>" 'コピー&貼り付け Range("A47:U66").Copy tbl.Range("A" & z + 1).PasteSpecial Paste:=xlPasteValues '[発注番号]でソート tbl.Range("A1").Sort Key1:=tbl.Range("A1"), Header:=xlGuess 'コピーモード解除 Application.CutCopyMode = False '空白行を省くを解除 Selection.AutoFilter Field:=14 'ブック保存 'ActiveWorkbook.Save '画面クリア Call 画面クリア '警告メッセージ表示 Application.ScreenUpdating = True Exit_登録: MsgBox "登録しました。" Exit Sub Err_登録: MsgBox "エラーが発生しました

  • エクセルVBAに関しての質問です。

    エクセルVBAに関しての質問です。 同じフォルダ内に同形式のエクセルファイルが複数あります。そのファイルの特定のシートの中の特定の列のみをコピーして並べたいと思っています。 (1)フォルダはUSBに入れて使ったり、複数のパソコンの中で使われるので特定の場所にあるとは限りません。 (2)フォルダ名はその年度に応じて変更されます。「2009」、「2010」・・・といった具合です。 (3)フォルダ内のファイル数は常に3つで、「記録集計第1期」「記録集計第2期」「記録集計第3期」と名前を付けています。 (4)3つのファイル全てに「結果」という名前のシートがあり、そのシートのC4~AU37までのセルをコピーしたいです。 (5)C4~AU37までのセルには数値では無く、IF関数を使用して出された「◎」「◯」「△」等の文字列が入っています。 (6)コピーしたセルを「記録集計第3期」ファイルの中の「年度末結果」というシートのC2以降に並べてコピーしたいです。ただし、コピーする際に4行ずつ飛ばしてコピーしたいです。 「記録集計第1期」のC4を「年度末結果」のC2へ、C5をC6へ...... 「記録集計第2期」のC4を「年度末結果」のC3へ、C5をC7へ...... 「記録集計第3期」のC4を「年度末結果」のC4へ、C5をC8へ...... といった具合です。 このコピーにより、C2から始まって、C2=記録集計第1期のC4、C3=記録集計第2期のC4、 C4=記録集計第3期のC4ときて、年度末結果のC5には空白の列ができます。 そして、C6からまた続く訳です。 ややこしくてすみません。 (7)作業手順としては、「記録集計第3期」のファイルだけを開き、その中の「年度末結果」のシートにボタンを作って上記のVBAを動かせたらと思っています。 (8)「記録集計第1期」「記録集計第2期」のファイルは開かずにデータをコピーしたいです。 勝手なお願いで申し訳ございませんが、 お時間がございましたら、よろしくお願いいたします。

  • エクセルVBAに関しての質問です。

    エクセルVBAに関しての質問です。 同じフォルダ内に同形式のエクセルファイルが複数あります。そのファイルの特定のシートの中の特定の列のみをコピーして並べたいと思っています。 (1)フォルダはUSBに入れて使ったり、複数のパソコンの中で使われるので特定の場所にあるとは限りません。 (2)フォルダ名はその年度に応じて変更されます。「2009」、「2010」・・・といった具合です。 (3)フォルダ内のファイル数は常に3つで、「記録集計第1期」「記録集計第2期」「記録集計第3期」と名前を付けています。 (4)3つのファイル全てに「結果」という名前のシートがあり、そのシートのC4~AU37までのセルをコピーしたいです。 (5)C4~AU37までのセルには数値では無く、IF関数を使用して出された「◎」「◯」「△」等の文字列が入っています。 (6)コピーしたセルを「記録集計第3期」ファイルの中の「年度末結果」というシートのC2以降に並べてコピーしたいです。ただし、コピーする際に4行ずつ飛ばしてコピーしたいです。 「記録集計第1期」のC4を「年度末結果」のC2へ、C5をC6へ...... 「記録集計第2期」のC4を「年度末結果」のC3へ、C5をC7へ...... 「記録集計第3期」のC4を「年度末結果」のC4へ、C5をC8へ...... といった具合です。 このコピーにより、C2から始まって、C2=記録集計第1期のC4、C3=記録集計第2期のC4、 C4=記録集計第3期のC4ときて、年度末結果のC5には空白の列ができます。 そして、C6からまた続く訳です。 ややこしくてすみません。 (7)作業手順としては、「記録集計第3期」のファイルだけを開き、その中の「年度末結果」のシートにボタンを作って上記のVBAを動かせたらと思っています。 (8)「記録集計第1期」「記録集計第2期」のファイルは開かずにデータをコピーしたいです。 勝手なお願いで申し訳ございませんが、 お時間がございましたら、よろしくお願いいたします。

  • Excel VBA sort で困ってます。(初心者です)

    Excel VBA sort で困ってます。(初心者です) 行いたい事は、曜日別時間別にsortして印刷をするをやっていますがsortがうまくいきません。 sort範囲指定後、key1にRange(a1:f1) 列は月(a)~土(f) セルは時間が入っています(入っていないセルも存在します) sort後、ブレイクポイント指定して、シートを確認したが、月(a)の列のみsortされ、それ以降のsortができていません。願わくは、正しいロジック又は、どこがおかしいのか教えて頂けたら幸いです。宜しくお願い致します。

  • 【Excel VBA】A列の全角・半角文字をチェック

    【Excel VBA】A列の全角・半角文字をチェック Excel VBAの初心者です。 仕事で必要なため、教えていただけると助かります。 【やりたいこと】 Excel VBAで、入力が完了したExcelシートのA列(A1からA10)が、 半角のみであること、または全角が入力されていないこと、を チェックしたいです。 半角以外の文字があった場合は、メッセージを表示します。 また、半角以外のセルがあった場合は、そのセルの色を水色にします。 入力チェックの方法は、ボタンにマクロを登録して、 そのボタンを押下することで行います。 以下に、僕が試したプログラムを記します。 アドバイスをいただけると幸いです。よろしくお願いします。 Sub 入力チェック() Dim cellValue As String Dim strANSI As String Dim i As Integer For i = 0 To 10 cellValue = Cells(1, i + 1) strANSI = StrConv(cellValue, vbFromUnicode) If Len(cellValue) = LenB(strANSI) Then MsgBox "セルは半角のみ" myColor = 8 Else MsgBox "セルの内容は全角のみ" End If MsgBox "セルの内容は全角と半角があり" Next i End Sub

  • エクセルの入力に関する質問です。リスト設定してあるセルまでタブで移動し

    エクセルの入力に関する質問です。リスト設定してあるセルまでタブで移動したら、Alt+↓キーで選択できる事が分かったのですが、sheetにVBAを設定する事で自動的に▼が押下されている状態を作ることはできないでしょうか。

  • エクセルVBA 重複を表示したい

    エクセルVBA 重複を表示したい A列で重複すると警告するコードを以下のように作成しました。 これを修正してA列で重複して、なおかつB列でも重複した場合警告するコードにしたいのです。 添付した図では「同姓同名あり、確認してください、鈴木一郎、山口」と表示したいのです。 ご教授よろしくお願いします。 Sub test() Dim myRange As Range Dim 同一flag As Boolean Dim MsgStr As String For Each myRange In Range("A2:A10") If WorksheetFunction.CountIf(Range("A2:A10"), myRange) > 1 Then If 同一flag = False Then 同一flag = True If InStr(1, MsgStr, myRange) = 0 Then MsgStr = MsgStr & myRange & vbCrLf End If End If Next If 同一flag = True Then MsgBox "同姓同名あり" & Chr(13) & _ "確認してください" & Chr(13) & _ vbCrLf & MsgStr Else End If End Sub

  • エクセルVBA 重複を表示したい

    エクセルVBA 重複を表示したい A列で重複すると警告するコードを以下のように作成しました。 これを修正してA列で重複して、なおかつB列でも重複した場合警告するコードにしたいのです。 添付した図では「同姓同名あり、確認してください、鈴木一郎、山口」と表示したいのです。 ご教授よろしくお願いします。 Sub test() Dim myRange As Range Dim 同一flag As Boolean Dim MsgStr As String For Each myRange In Range("A2:A10") If WorksheetFunction.CountIf(Range("A2:A10"), myRange) > 1 Then If 同一flag = False Then 同一flag = True If InStr(1, MsgStr, myRange) = 0 Then MsgStr = MsgStr & myRange & vbCrLf End If End If Next If 同一flag = True Then MsgBox "同姓同名あり" & Chr(13) & _ "確認してください" & Chr(13) & _ vbCrLf & MsgStr Else End If End Sub

  • VBA初心者です。

    VBA初心者です。 現在、1つのシート中に15程度のグラフチャートがありますが、そのうち、選択した特定のグラフチャートのみに縦横軸の最大値最小値を設定する(統一する)マクロを実行したいと考えております。 このとき、どのようにしたら選択した特定のグラフのみにマクロを適用できるかがわかりません。 ご教授お願いいたします!!

  • 選択した特定のチャートオブジェクトのみにマクロ

    選択した特定のチャートオブジェクトのみにマクロ VBA初心者です。 現在、1つのシート中に15程度のグラフチャートがありますが、そのうち、選択した特定のグラフチャートのみに縦横軸の最大値最小値を設定する(統一する)マクロを実行したいと考えております。 このとき、どのようにしたら選択した特定のグラフのみにマクロを適用できるかがわかりません。 ご教授お願いいたします!!