Excel VBA質問箱 IV

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

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


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

【79941】Re:Excelで家計簿制作中
発言  マナ  - 18/5/30(水) 19:06 -

引用なし
パスワード
   ▼家計簿Excel さん:


最初にピボットを作成したときの
元データに新しいデータを追加すれば
ピボットにその結果が反映させられます。

例えば、こんな感じで

  Dim データWS As Worksheet
  Dim ピボットWS As Worksheet
  Dim 追加行 As Long
  
  Set データWS = Worksheets("Sheet1")
  Set ピボットWS = Worksheets("Sheet2")
  
  追加行 = データWS.Cells(1).End(xlDown).Row + 1
  
  データWS.Cells(追加行, 1).Value = txt購入日.Text
  データWS.Cells(追加行, 2).Value = txt金額.Text
  
  ピボットWS.PivotTables(1).SourceData = _
    データWS.Cells(1).CurrentRegion.Address(, , xlR1C1, True)



・ツリー全体表示

【79940】Re:セルにある日付をファイル名に反映
質問  いち  - 18/5/30(水) 17:24 -

引用なし
パスワード
   ▼よろずや さん:
>▼いち さん:
>>色々調べては見たものの、見当がつかず手付かずです・・・
>ファイル名の変更は保存するときにしか出来ないということは理解しておられますか?
>
>1. セルから月を取り出す。
>2. 自ブックのファイル名を取り出す。
>3. 1.と2.を結合する。
>4. ファイル名を変更して保存する。
>
>4.は出来ますか?

はい。大丈夫です。
ちなみにファイル名を変更しつつ上書き保存というのは出来ますでしょうか?
・ツリー全体表示

【79939】Re:セルにある日付をファイル名に反映
発言  よろずや  - 18/5/30(水) 15:59 -

引用なし
パスワード
   ▼いち さん:
>色々調べては見たものの、見当がつかず手付かずです・・・
ファイル名の変更は保存するときにしか出来ないということは理解しておられますか?

1. セルから月を取り出す。
2. 自ブックのファイル名を取り出す。
3. 1.と2.を結合する。
4. ファイル名を変更して保存する。

4.は出来ますか?
・ツリー全体表示

【79938】Re:セルにある日付をファイル名に反映
回答  いち  - 18/5/30(水) 13:01 -

引用なし
パスワード
   ▼よろずや さん:
>▼いち さん:
>>A1に日付が入ったセルがありまして
>>その日付の月をファイル名の先頭に付けることは可能でしょうか?
>
>ご自分では、どこまでやってみましたか?

色々調べては見たものの、見当がつかず手付かずです・・・
・ツリー全体表示

【79937】Re:セルにある日付をファイル名に反映
発言  よろずや  - 18/5/30(水) 12:29 -

引用なし
パスワード
   ▼いち さん:
>A1に日付が入ったセルがありまして
>その日付の月をファイル名の先頭に付けることは可能でしょうか?

ご自分では、どこまでやってみましたか?
・ツリー全体表示

【79936】Re:Excelで家計簿制作中
お礼  家計簿Excel  - 18/5/30(水) 11:40 -

引用なし
パスワード
   すみません。

ピポットテーブルに書き込み出来ないのに項目欄の次の行にどう書き込むべきなのか
僕では理解できませんでした。


諦めることにします。
・ツリー全体表示

【79935】セルにある日付をファイル名に反映
質問  いち  - 18/5/30(水) 9:42 -

引用なし
パスワード
   A1に日付が入ったセルがありまして
その日付の月をファイル名の先頭に付けることは可能でしょうか?

例としては
A1に"2018/06/05"とあった場合に
マクロを実行すると
ファイル名の頭に"06-"と付くようにする

どなたかお分かりになる方がいましたらご教授いただければと思います。

以上、宜しくお願い致します。
・ツリー全体表示

【79934】Re:Sendkeysで制御文字と全角文字が送れ...
回答  亀マスター  - 18/5/29(火) 22:40 -

引用なし
パスワード
   うーむ、難しいですね。

Ctrl+Vでの貼り付けができないとありましたが、対象とアプリケーションでは貼り付けのショートカットキーはないのでしょうか。あるなら、それをSendKeysで試してみてください。
あと、貼り付けがうまくいかなかったコードを実行した直後、メモ帳などでCtrl+Vを普通にキーボードから入力した場合、きちんと指定した文字列を貼り付けることはできるでしょうか。

Tabキーで次のコントロールに移るアプリケーションなのにSendKeysの{TAB}でうまくいかないというのは…何なんでしょうね。一応確認ですが、プログラム実行時に対象のアプリケーションはアクティブになってますよね?

そもそもの目的である、制御文字としてのTabを送るのであれば、vbTabなどの定数を送ればいいと思います。ただ、クリップボードからの貼り付けができるというのが前提ですが…。
もしくは、アプリケーションによってはShft+TabやCtrl+Tabで制御文字としてのTabを入力できることもありますので、確認してみてください。
・ツリー全体表示

【79933】Re:Sendkeysで制御文字と全角文字が送れ...
お礼  山田  - 18/5/29(火) 21:48 -

引用なし
パスワード
   返信ありがとうございます。

クリップボードから貼り付けようとしましたが、失敗しました。
Ctrl+vで貼り付けができないアプリケーションのようです。

Tabキーは押すと次のコントロールに移るアプリケーションです。
次の項目へフォーカスを移そうとして"{TAB}"を送りました。
しかし、そのままでした。
・ツリー全体表示

【79932】Re:Excelで家計簿制作中
発言  マナ  - 18/5/29(火) 19:04 -

引用なし
パスワード
   ▼家計簿Excel さん:

>・領収書をExcelにまとめるために一覧表を作成した
>・ピポットテーブルを使い見やすく、検索(フィルター)機能を使えるようにしたい
>・いちいち欄に記入するのではなく、ユーザーフォームを使って記入したい


ここまでは理解できます。

>それとも一覧表にマクロを使わずに最初からピポットテーブル機能を使っているのが間違っているのでしょうか?

ここの意味がわかりませんが、たぶん間違っています。
マクロで、一覧表にデータ追加し、その後、続けてピボット更新です。
ピボットに直接データを転記するものではありません。(できません)

↓のような感じにするとよいです。

Private Sub btnOk_Click()
    一覧の最下行にデータを追加
    ピボットテーブルの更新    
End Sub
・ツリー全体表示

【79931】Re:Excelで家計簿制作中
質問  家計簿Excel  - 18/5/29(火) 11:54 -

引用なし
パスワード
   わかりにくい質問で申し訳ありません。

・領収書をExcelにまとめるために一覧表を作成した
・ピポットテーブルを使い見やすく、検索(フィルター)機能を使えるようにしたい
・いちいち欄に記入するのではなく、ユーザーフォームを使って記入したい

一覧表を作成し項目を7項目(日付や金額)作りピポットテーブル機能を追加し
ユーザーフォームを作成した。
ところがユーザーフォームにあるボタンクリックによる書き込みをしたところ
ピポットテーブル枠の外からの書き込みを始めた。

これはあくまで説明用の例なのですが
A1にタイトル
B2〜H2に項目
B3:H3〜B10:H10までをピポットテーブルだとすると
B11:H11から書き始めます。
本当はB3:H3から順に上から埋めていってほしいのですが・・・

おそらく、ピポットテーブルの使い方or書き込みボタンのコードが違っているからうまく上から順に書き込んでくれないのだと思うのですが・・・

書き込みボタンのコードは


Private Sub btnOk_Click()
 Dim lastRow As Long
    With Worksheets("一覧")
    lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
    .Cells(lastRow, 2) = Me.txt購入日.Text
  End With
End Sub

のように記載しました。

空白の探し方を間違っているのでしょうか・・・
それとも一覧表にマクロを使わずに最初からピポットテーブル機能を使っているのが間違っているのでしょうか?

ご教授下さい。
・ツリー全体表示

【79930】Re:画像付データベース
回答  亀マスター  - 18/5/28(月) 23:02 -

引用なし
パスワード
   横から失礼します。

WindowオブジェクトのRangeFromPointメソッドを使えばカーソル位置にあるセルをRangeオブジェクトとして取得できるので、これとAPI関数のGetCursorPosを使えばやりたいことに近いものができるかもしれません。

画像自体は直接貼り付けず、画像へのリンクをセルの値なりコメントなりに入れておいて、そのセルの上にマウスカーソルが移動したら、リンクの情報を元に画像表示用のセルかユーザーフォームにでも画像を表示するということで。

流れとしては以下のような感じでしょうか。

Do

  マウスカーソル位置取得
  カーソル位置のセルを取得
  取得したセルの値を取得
  セルの値を元に画像を表示

Loop

実際にはループを抜けるための処理やリンク先が指定されていないセルの上にカーソルがある場合の処理、その他エラートラップなどが必要になるとは思いますが。
あと、いちいちカーソルを動かす度に画像を読み込む必要があるので、処理が遅くなるかもしれません。

それぞれの処理の方法は、ググるなり追加で質問するなり。
・ツリー全体表示

【79929】Re:画像付データベース
お礼  そば  - 18/5/28(月) 21:11 -

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

アドバイスありがとうございます。
もうすこし自分で努力してみようと思います。

ファイルを開く段階で重いってのは
コメントに画像を貼り付けるって
発想を変えないといけなさそうですね。
がんばってみます。
・ツリー全体表示

【79928】Re:Excelで家計簿制作中
発言  マナ  - 18/5/28(月) 18:46 -

引用なし
パスワード
   ▼家計簿Excel さん:

>ピポットテーブルの枠の外からしか書き込まなくなりました。
>
>何かいい方法はありませんか??
>それともピポットテーブルは諦めるべきでしょうか・・・

何をしようとしているか理解できていませんが、

1)ピボットテーブルの元になる表にデータを追加
2)その後、ピボットテーブルの更新

というマクロではないのでしょうか。
・ツリー全体表示

【79927】Excelで家計簿制作中
質問  家計簿Excel  - 18/5/28(月) 15:03 -

引用なし
パスワード
   Excelで家計簿作っていてVBAにチャレンジしていて

レシートを書く一覧表を作っていて、ユーザーフォームから入力出来る仕様にしてみました。
使用用途ごとにお金の流れを見れたらいいなと思い、ピポットテーブルで色分け・フィルター機能を追加しました。
すると下記のコードで書き込もうとすると(コードは最後に記載します)
ピポットテーブルの枠の外からしか書き込まなくなりました。

何かいい方法はありませんか??
それともピポットテーブルは諦めるべきでしょうか・・・
ご教授下さい。

Private Sub btnOk_Click()
 Dim lastRow As Long
    With Worksheets("一覧")
    Range("F3:H4").Select
    lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
    .Cells(lastRow, 2) = Me.txt購入日.Text
  End With
End Sub
・ツリー全体表示

【79926】Re:Sendkeysで制御文字と全角文字が送れ...
回答  亀マスター  - 18/5/26(土) 22:52 -

引用なし
パスワード
   SendKeysで全角文字がうまく送れないというのは割とよくあることのようです。

対応方法としては、クリップボードに必要な文字を送り、それから Ctrl+Vで貼り付けるというのがいいようです(対象のアプリケーションでの貼り付け操作がCtrl+Vの場合)。

Sub test()

  'Microsoft Forms 2.0 Object Libraryへの参照設定が必要
  '参照設定したくないならCreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")で
  With New MSForms.DataObject
    .SetText "あいうえお"
    .PutInClipboard
  End With

  With CreateObject("Wscript.Shell")
   .SendKeys "^v", True
  End With

End Sub

Tabがうまく働かなかった理由ははっきりと言えませんが、対象のアプリケーションで、普通にTabキーを押すとTab文字が挿入されるのでしょうか。
Tabはカーソルの移動でもよく使いますので、そういう動作になっていませんか?SendKeysの{Tab}は特殊文字としてのTabを挿入する機能ではなく、単にTabキーを押すという役割ですので。
・ツリー全体表示

【79925】Sendkeysで制御文字と全角文字が送れない
質問  山田  - 18/5/26(土) 16:41 -

引用なし
パスワード
   別のアプリケーションにSendkeysでキーイベントを送ろうとしています。
通常のSendkeysでは送れなかったため、
With CreateObject("Wscript.Shell")
 .SendKeys "ABC{TAB}", True
End With
で送ろうとしました。

半角の英数字は送れたのですが、TAB等の制御文字が反応せず、全角文字は文字化けしてしまいました。
制御文字や全角文字を送るにはどうしたらよいでしょうか。
・ツリー全体表示

【79924】Re:指定のフォルダから画像を取込むマクロ
回答  γ  - 18/5/23(水) 23:26 -

引用なし
パスワード
   まずは、下記のサイトでデバッグの仕方を勉強されたらいかがでしょうか。
ht tp://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html
ht tp://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030_03.html

質問してコメントがあったら、とりあえず返事くらいしてください。
最低限のマナーだと思いますよ。
・ツリー全体表示

【79923】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/23(水) 23:06 -

引用なし
パスワード
   ▼ペーターパン さん:

こめんなさい

>      Set 参照セル = Nothing

これは、不要でした。

>      On Error Resume Next
>      Set 参照セル = セル.DirectPrecedents
>      On Error Resume Next

後からの、
On Error Resume Next

On Error GoTo 0
でした。
・ツリー全体表示

【79922】Re:シート内にセル参照があるか調べる方法
発言  マナ  - 18/5/23(水) 22:25 -

引用なし
パスワード
   ▼ペーターパン さん:

試してみてください

ht tp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim セル As Range
  Dim 参照セル As Range
  
  Application.EnableEvents = False
  For Each セル In Target
    If セル.HasFormula Then
      Set 参照セル = Nothing
      On Error Resume Next
      Set 参照セル = セル.DirectPrecedents
      On Error Resume Next
      If Not 参照セル Is Nothing Then
        MsgBox "その入力は禁止されています"
        Application.Undo
        Exit For
      End If
    End If
  Next
  Application.EnableEvents = True
  
End Sub
・ツリー全体表示

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