Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


234 / 3841 ページ ←次へ | 前へ→

【77763】Re:集計の仕方
発言  マナ  - 15/12/19(土) 21:46 -

引用なし
パスワード
   ▼事務 さん:

>ピボットテーブルのようにVBAをしたいのですがうまくいきません。

ピボットテーブルでは、何故だめなのでしょうか
・ツリー全体表示

【77762】集計の仕方
質問  事務  - 15/12/19(土) 21:30 -

引用なし
パスワード
   こんばんは。EXCEL VBA初心者です。
※データは3000行ぐらいあります。
(元データ)を(集計後)のようにしたいのです。その後(集計後を)さらに加工を予定しています。
ピボットテーブルのようにVBAをしたいのですがうまくいきません。他にどのような方法があるのかまったく思い浮かびません。
コードのアプローチを教えてください。よろしくお願い致します。


(元データ)
日付    氏名    開始時間    終了時間
2月1日    A    8:00        12:00
2月1日    A    12:00        15:00
2月1日    B    9:00        11:00
2月1日    B    11:00        16:00
2月2日    A    7:00        9:00
2月2日    A    9:00        14:00
2月2日    B    10:00        16:00
2月2日    B    16:00        17:00

(集計後)
日付    氏名    開始時間    終了時間
2月1日    A    8:00        15:00
2月1日    B    9:00        16:00
2月2日    A    7:00        14:00
2月2日    B    10:00        17:00
・ツリー全体表示

【77761】Re:テキストファイルをエクセルのシート...
発言  マナ  - 15/12/19(土) 17:25 -

引用なし
パスワード
   ▼PSVV9134 さん:

3段階でいいのでは?

1)テキストファイルを開いて
2)シート名を測定データに変更し
3)所定のフォルダにXLS形式で保存(上書き保存)
・ツリー全体表示

【77760】Re:テキストファイルをエクセルのシート...
発言  γ  - 15/12/19(土) 17:16 -

引用なし
パスワード
   他人にコードを書いて貰おうと思っていますか?
それともご自分で作ろうとしていますか?

後者なら重要なことから順にステップを踏んで実現していくことですね。

テキストファイルをExcelに読み出すには、
データ - 外部データの取込 - テキストファイル
を使うといいですよ。
マクロ記録をとればコードができます。

ファイル指定は GetOpenFilenameを使います。
ネットで使い方を調べてください。拡張子指定もできます。

あとは、微調整ですね。
・ツリー全体表示

【77759】テキストファイルをエクセルのシートに自...
質問  PSVV9134 E-MAIL  - 15/12/19(土) 16:43 -

引用なし
パスワード
   vbaについて

テキストファイルをエクセルにコピーし(エクセルの上にドラックして開いた時のような感じ)
それを応用して作業しようと思うのですが下記ことをやる場合どういうコードを書けばいいでしょうか。


@どのテキストファイルをコピーするか聞く(ダイアログボックスで)
※txtのみ開けるようにする
※すでに開いている場合は、[abc.txtを閉じてください。閉じたらOKを押してください。やめる場合は、キャンセルを押してください。]と表示する(OK・キャンセルボタン)
※ファイルが見つからない場合は、[ファイルが見つかりません。もう一度探しますか。]と聞ききダイアログボックスもう一度開き探させる(はい・いいえボタン)

Aデスクトップにある測定結果のフォルダに
@で選択したファイル名(例:abc.txt → abc.xls)で
Excelファイル(xls形式)を作り開く
※すでに開いている場合は、[abc.xlsを閉じてください。閉じたらOKを押してください。やめる場合は、キャンセルを押してください。]と表示する(OK・キャンセルボタン)
※すでに同一のExcelファイルがある場合は、上書きしますかと聞き
はいを選択したら上書きする(はい・いいえボタン)

BAのExcelファイルに
@で選択したテキストデータを貼り付け

CBで貼り付けたシート名を測定データに変更

D初めに作られているSheet1、Sheet2、Sheet3があれば削除

E保存(上書き)
・ツリー全体表示

【77758】Re:EXCEL2007で正常なのが2013では動かな...
発言  β  - 15/12/18(金) 17:32 -

引用なし
パスワード
   ▼独身VBA さん:

不思議ですねぇ。
こちらでユーザーフォームを表示してコマンドボタンでシート作成。
またユーザーフォームを表示してコマンドボタンでシート作成。

何度やっても、アクティブになっている、今作られたばかりのシートに入力ができます。
・ツリー全体表示

【77757】Re:EXCEL2007で正常なのが2013では動かな...
お礼  [名前なし]  - 15/12/18(金) 17:06 -

引用なし
パスワード
   ▼β さん:
>▼独身VBA さん:
>
>>エクセル2007で作り正常に作動していたのですが、2013で動かすと、新しく作ったシートに文字が打ち込めません。ほかのシートに移動させて再度、新しくできたシートに戻すと打ち込めます。
>
>文章の意味がいまいちわからないのですが、Win8.1+xl2013 で提示のコードを動かしてみました。
>問題なくシートが追加され書きこまれます。
>出来上がったシートへの手作業入力も、もちろんできています。
>
>具体的にはどんな不具合なんでしょうか?

βさん:
お返事ありがとうございます。
新しく出来上がったシートがActivate状態になっているのですが、文字を打ち込むとその前に作ったシートの方に入力されてしまいます。他のシートにクリックして新しく作ったシートをクリックして文字を打ち込むと、きちんと入力できるんです。
元のシートは保護はかかっていません。
・ツリー全体表示

【77756】Re:EXCEL2007で正常なのが2013では動かな...
発言  β  - 15/12/18(金) 7:31 -

引用なし
パスワード
   ▼独身VBA さん:

もしかして・・・
コピー元の FAX送信書 シート、保護がかかっていませんか?
・ツリー全体表示

【77755】Re:EXCEL2007で正常なのが2013では動かな...
発言  β  - 15/12/17(木) 23:28 -

引用なし
パスワード
   ▼独身VBA さん:

>エクセル2007で作り正常に作動していたのですが、2013で動かすと、新しく作ったシートに文字が打ち込めません。ほかのシートに移動させて再度、新しくできたシートに戻すと打ち込めます。

文章の意味がいまいちわからないのですが、Win8.1+xl2013 で提示のコードを動かしてみました。
問題なくシートが追加され書きこまれます。
出来上がったシートへの手作業入力も、もちろんできています。

具体的にはどんな不具合なんでしょうか?
・ツリー全体表示

【77754】EXCEL2007で正常なのが2013では動かない
質問  独身VBA  - 15/12/17(木) 21:29 -

引用なし
パスワード
   エクセル2007で作り正常に作動していたのですが、2013で動かすと、新しく作ったシートに文字が打ち込めません。ほかのシートに移動させて再度、新しくできたシートに戻すと打ち込めます。なぜでしょうか?コードは以下の通りです。

Private Sub CommandButton1_Click()
  Dim ws As Worksheet
  Dim r As Long 'データの採取行数を代入する変数
  'データの最終行数を変数「r]に代入する
  r = Worksheets("会社名").Range("A1").CurrentRegion.Rows.Count
  '2行目からデータの最終行までループする
   Worksheets("会社名").Cells(r + 1, 2).Value = TextBox1.Value 'ユーザーフォームテキストボックス1を会社名シートの会社名欄に会社名を入れる
   Worksheets("会社名").Cells(r + 1, 3).Value = TextBox2.Value 'ユーザーフォームテキストボックス2を会社名シートの担当者欄に担当者を入れる
   Worksheets("会社名").Cells(r + 1, 4).Value = TextBox3.Value 'ユーザーフォームテキストボックス2を会社名シートの件名欄に件名を入れる
   Worksheets("FAX送信書").Copy after:=Worksheets(Worksheets.Count) 'FAX送信書をシートの一番あとにコピーする
   Worksheets(Worksheets.Count).Range("B4").Value = TextBox1.Value '新しいシートのB4にテキストボックス1の文字を入れる
   Worksheets(Worksheets.Count).Range("B6").Value = TextBox2.Value '新しいシートのB6にテキストボックス2の文字を入れる
   Worksheets(Worksheets.Count).Range("J15").Value = TextBox3.Value '新しいシートのJ15にテキストボックス2の文字を入れる
   Worksheets(Worksheets.Count).Range("W4").Value = Date '新しいシートのW4の欄に作成日を入れる
   Worksheets("会社名").Cells(r + 1, 1).Value = Worksheets(Worksheets.Count).Range("W4").Value
   ActiveSheet.Name = Format(Now, "yyyymmdd-hhmmss") '新規に作ったシートに日付と時間の名前をつける
   ActiveSheet.Hyperlinks.Add Anchor:=Worksheets("会社名").Cells(r + 1, 5), Address:="", SubAddress:= _
   Format(Now, "'yyyymmdd-hhmmss'") & "!A1", TextToDisplay:=Format(Now, "'yyyymmdd-hhmmss'") & "!A1" '新しいシートを会社名のリンク欄にハイパーリンクさせる
   
   Unload UserForm1 'ユーザーフォームを閉じる
   ActiveSheet.Range("C18:AE18").Select
   ActiveCell.Value = ""
    
End Sub
・ツリー全体表示

【77753】Re:特定条件の行に他シートの行を貼り付...
お礼  さいとう  - 15/12/15(火) 18:20 -

引用なし
パスワード
   空白行のデータをデリートして実行したらうまくいきました!
本当にどうもありがとうございました!
・ツリー全体表示

【77752】Re:特定条件の行に他シートの行を貼り付...
発言  γ  - 15/12/15(火) 7:16 -

引用なし
パスワード
   ----空白1行----
というのが見かけだけで、数式が入っているとかでは?
# 日中はアクセスしないので、別の方のコメントをお待ちください。
・ツリー全体表示

【77751】Re:特定条件の行に他シートの行を貼り付...
お礼  さいとう  - 15/12/15(火) 7:09 -

引用なし
パスワード
   ありがとうございました!
教えていただいた手順で見出しのコピーまではできました。

シート分けコピーは、1番上のブロックは1シートにうまく貼りつくのですが、
残りのシートはすべて2番目のブロックから最後のブロックまでが1シートに貼り付けとなってしまったので
コードを触ってみます。
・ツリー全体表示

【77750】Re:質問追記です
お礼  教えて下さい  - 15/12/15(火) 6:53 -

引用なし
パスワード
   ▼γ さん:

なんと!
ありがとうございます。

希望通りに出来ました。

もし、悩んだことがあったらお願いするかも知れませんが、その時はよろしくお願いいたします。
ありがとうございました。
・ツリー全体表示

【77749】Re:質問追記です
発言  γ  - 15/12/15(火) 6:07 -

引用なし
パスワード
   よくわからないが、されたいことは、
「あるセルに年月があったとき、A13以下に当月16日から翌月15日までの
日付を表示させたい。大の月、小の月いずれにも対応させたい」
ということですか。

仮にそうだとすると、以下のようなことになるでしょう。

C3に日付形式で 2015/2/1 とし、
書式 yyyy"年"m"月"で表示させます。

A13 は = C3 + 15 とし、

A14 は =IF(A13="","",IF(DAY(A13)=15,"",A13+1))
とし、以下A43までコピーします。

A13以下のセルの書式は、 m"月"d"日" とします。

もちろん VBAでも可能でしょう。
For .. Nextループを使えばよいでしょう。
でも、簡単なことを簡単に済ませばよいと思います。
・ツリー全体表示

【77748】質問追記です
発言  教えて下さい  - 15/12/15(火) 4:31 -

引用なし
パスワード
        質問内容が下手ですみません。
ちょっと追記します。
A13からA43まで日付が入ってます、例えば2015年2月なら
A41は3月16日
A43は3月18日
と、なってしまいます。
しかし、月によっては、A43は15日になるので、A41以降を16日以上なら
空白としたいのです、月によってシートを作れば良いだけなのですが、
違う方法で何とか出来ないものかと考えております。
・ツリー全体表示

【77746】日付をテキスト形式で取り出したいです
質問  教えて下さい  - 15/12/15(火) 4:09 -

引用なし
パスワード
   請求関係で月の一覧表を作成しているのですが、16日〜翌月15日までの表になっており
月によって28日とか31日とか日数はまちまちなので、翌月の16日以降を表示させたくないのです。
関数で何とか出来ないかと調べると、text関数なるものがあったのですが、上手く使いこなせません。
また、サイトによってはVBAでないと出来ないとも書いてあり、非常に悩んでおります。文字として取り出せれば関数で何とかなるのですが、どのようにすればよいのでしょうか?また、VBAならどのようにすればよいのでしょうか?
皆様の知恵を貸して下さい、よろしくお願いいたします。
・ツリー全体表示

【77745】Re:特定条件の行に他シートの行を貼り付...
発言  γ  - 15/12/14(月) 20:39 -

引用なし
パスワード
   一例です。

Sub test()
  Dim ws As Worksheet
  Dim newBook As Workbook
  Dim lastRow As Long
  Dim myRng As Range
  Dim myRng2 As Range
  Dim wsNew As Worksheet
  Dim r As Range

  Set ws = ThisWorkbook.Worksheets("Sheet1")

  Set newBook = Workbooks.Add

  '"項目"のみ抽出
  lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
  Set myRng = ws.Range("A1", ws.Cells(lastRow, 4))
  myRng.AutoFilter Field:=1, Criteria1:="項目"

  ' その一列目の可視セルを変数に持つ
  Set myRng2 = ws.Range("A2", ws.Cells(lastRow, 1)).SpecialCells(xlCellTypeVisible)

  'オートフィルターを解除
  myRng.AutoFilter

  '各ブロックについて処理
  For Each r In myRng2
    '見出しのコピー
    ThisWorkbook.Sheets("見出し").Rows(2).Copy r

    '各ブロックを別々のシートに転記
    Set wsNew = newBook.Worksheets.Add(after:=newBook.Worksheets(newBook.Worksheets.Count))
    r.CurrentRegion.Copy wsNew.Range("A1")
    wsNew.Name = r(1).Offset(-1).Value
  Next
End Sub

十分な検証をしていないので、そちらでよくチェックしてください。
・ツリー全体表示

【77744】Re:処理速度の向上
発言  おさむ  - 15/12/14(月) 10:33 -

引用なし
パスワード
   γ様

返信ありがとうございます。

申し訳ございません。

>ただ、下記のプログラムをブックを開いてすぐに実行する場合と
>ブックを開いて何処でもいいからセルの文字を編集してから実行する
>のでは処理速度が違います。

この理由が一番知りたかったことで、知ってらっしゃる方がいたらと
思い投稿致しました。
・ツリー全体表示

【77743】Re:特定条件の行に他シートの行を貼り付...
お礼  さいとう  - 15/12/14(月) 5:24 -

引用なし
パスワード
   ありがとうございます。
おっしゃっていることの筋道と意味はわかるのですが、記述の仕方が全くわかりません。
一日潰して考えましたがどうにもなりませんでした。。。
・ツリー全体表示

234 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free