Excel VBA質問箱 IV

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

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


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

【81054】Re:コマンドボタン マクロの保存先のブッ...
発言  マナ  - 19/7/30(火) 19:10 -

引用なし
パスワード
   みも さん:

>開いている全てのブックになっている

一覧として表示されているだけではありませんか。
プルダウンで、作業中のブックを選べばよいです。
・ツリー全体表示

【81053】コマンドボタン マクロの保存先のブック...
質問  みも  - 19/7/30(火) 18:46 -

引用なし
パスワード
   マクロ実行のコマンドボタンについて教えてください。

表示→ツールバー→フォーム
ボタンを選び、シート上に貼り付ける。
ボタンを右クリック→マクロの登録をする際に通常は
ボタンを置くブックに設定しております。

時間をおいてまた開いた際に
なぜか保存先が自動的に 開いている全てのブック に
変更されている時があります。

開いている全てのブックになっているときは
インデックスが有効範囲にありません。
というエラーがでる事があります。。

知識不足で申し訳ありませんが、
この保存先は何かのタイミングで変わってしまうものでしょうか?
またどこか固定で設定できるところはありますでしょうか?
・ツリー全体表示

【81052】Re:userform上でのlabelのサイズについて
発言  マナ  - 19/7/30(火) 17:41 -

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

>「注意文」のメッセージを出そうと思っています。

画像で準備しておいて、それを表示では駄目ですか。
・ツリー全体表示

【81051】userform上でのlabelのサイズについて
質問  Nekomura  - 19/7/30(火) 10:33 -

引用なし
パスワード
   始めて質問させていただきます。

フォーム上で入力等しているとき、一定の操作(正確にはコンボボックスで特定の項目が選択された)時に、「注意文」のメッセージを出そうと思っています。

注意の文章は長々と100文字程度あり、一部重要な部分を太文字とかアンダーバーとか強調したいのですが、MsgBoxではそのようなことはできないようで。
Msgboxの代わりにユーザーフォーム立ち上げて、Labelで文章を作ろうと思いましたが、Labelも一部だけ太線やアンダーバーは無理っぽいということがわかりました。

そこで、しょうがなく、文章を複数に分けて、強調したい部分のみでLabelを作成して横に並べてみようと思いますが、Labelのサイズ(高さ・幅)は他のPC上で動かしたときにズレなどは発生するのでしょうか?
Labelの文字が被ったりズレるのは避けたいところです。
よろしくお願いします。
・ツリー全体表示

【81050】Re:イベントの表示箇所について
発言  マナ  - 19/7/26(金) 21:22 -

引用なし
パスワード
   参考まで
ht tp://addinbox.sakura.ne.jp/Excel_Tips06.htm
・ツリー全体表示

【81049】Re:サーバー内にあるフォルダとファイル...
発言  マナ  - 19/7/26(金) 21:09 -

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

今日、会社で使ってみました。
当然ですが、問題なく使えました。
ネットワークフォルダです。

急に頼まれて、必要になったのですが
自分で作る意欲はありませんでした。
このスレのおかげで検索する手間もはぶけました。
1時間もかからず目的達成。

ありがとうございました。(誰に?)
・ツリー全体表示

【81048】Re:イベントの表示箇所について
お礼  り。  - 19/7/25(木) 22:12 -

引用なし
パスワード
   できました!
こんなに短い行でわかりやすく作って頂きありがとうございます。
何から何まですみません。マナさんのお陰で完成しました。
本当にありがとうございます。
・ツリー全体表示

【81047】Re:イベントの表示箇所について
発言  マナ  - 19/7/25(木) 21:41 -

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

こんな感じで、表示後に、上端と左端を設定できませんか。

ActiveSheet.Calendar1.Visible = True
ActiveSheet.Calendar1.Top = target.Top
ActiveSheet.Calendar1.Left = target.Offset(, 1).Left
・ツリー全体表示

【81046】Re:イベントの表示箇所について
発言  り。  - 19/7/25(木) 21:15 -

引用なし
パスワード
   ▼マナ さん:
>▼り。 さん:
>
>>1,クリックしたセルに合わせて、イベントが表示される位置をずらす(クリックしたセルの右側等)事は可能でしょうか?
>
>TopやLeftで位置を指定できませんか。
>
アクティブセルを抽出した後に、組む流れなのでしょうか?
ht tp://www2.aqua-r.tepm.jp/~kmado/ke13u009.html
こちらを検索してみて貼り付けてみたのですが、だめでした。。。


>>2,イベントが出た対象のセルから、他のセルにカーソルを移動した際、表示されているイベントを非表示にしたいです
>
>最初に
>ActiveSheet.Calendar1.Visible = False
>を追加したらどうなりますか。

できました!本当にありがとうございます
・ツリー全体表示

【81045】Re:イベントの表示箇所について
発言  マナ  - 19/7/25(木) 18:50 -

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

>1,クリックしたセルに合わせて、イベントが表示される位置をずらす(クリックしたセルの右側等)事は可能でしょうか?

TopやLeftで位置を指定できませんか。

>2,イベントが出た対象のセルから、他のセルにカーソルを移動した際、表示されているイベントを非表示にしたいです

最初に
ActiveSheet.Calendar1.Visible = False
を追加したらどうなりますか。
・ツリー全体表示

【81044】イベントの表示箇所について
質問  り。  - 19/7/25(木) 11:41 -

引用なし
パスワード
   先日に引き続き、この場をお借りさせて頂きます。
特定のセルをクリックするとカレンダーが表示され、日付をクリックするとセルに日付が入力されるものを作成しております。


   ActiveCell.Value = Calendar1.Value
   ActiveSheet.Calendar1.Visible = False
 End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("K:K,M:M,N:N,P:P,W:W,Y:Y")) Is Nothing Then Exit Sub
If Target.Row < 8 Then Exit Sub
     ActiveSheet.Calendar1.Visible = True
     ActiveSheet.Calendar1.Value = Date
 End Sub


上記のコードに、あと2つの機能を追加したいのですが、いろいろ調べているのですがこれ以上が全く進みません。どうかご教授お願い致します。

1,クリックしたセルに合わせて、イベントが表示される位置をずらす(クリックしたセルの右側等)事は可能でしょうか?(列や行が複数あるのですが、表示されるカレンダーの位置が毎回同じになってしまう為)

2,イベントが出た対象のセルから、他のセルにカーソルを移動した際、表示されているイベントを非表示にしたいです(現状だと日付を押すまで表示され続けてしまう)

素人で申し訳ありません。。。
・ツリー全体表示

【81043】Re:データベースから表を作成したのですが
発言  マナ  - 19/7/24(水) 17:49 -

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

>何か他に良い方法はあるでしょうか?

Dictionaryを利用するのが、簡単です。
Q&A自掲示板では、よく使われています。
でも、初めてだと全くわからないかもしれません。

Sub test()
  Dim tbl, 抽出条件 As Range, 抽出先 As Range
  Dim w()
  Dim dicX As Object, dicY As Object
  Dim 日付, 項目 As String, 数量 As String
  Dim k As Long
 
  tbl = Worksheets("詳細").Range("a2").CurrentRegion.Value
  Set 抽出条件 = Worksheets("見出し").Range("a2").CurrentRegion
  Set 抽出先 = Worksheets("一覧").Range("a2")
  
  ReDim w(1 To UBound(tbl), 1 To UBound(tbl))
  
  Set dicX = CreateObject("scripting.dictionary")
  Set dicY = CreateObject("scripting.dictionary")

  For k = 1 To UBound(tbl)
    日付 = tbl(k, 1)
    項目 = tbl(k, 3)
    数量 = tbl(k, 4)
    
    If WorksheetFunction.CountIf(抽出条件, 日付) Then
      If Not dicX.exists(日付) Then
        dicX(日付) = dicX.Count + 1
        w(1, dicX(日付)) = 日付
      End If
      If Not dicY.exists(項目) Then
        dicY(項目) = dicY.Count + 1
        w(dicY(項目), 1) = 項目
      End If
      
      w(dicY(項目), dicX(日付)) = 数量
      
    End If
  Next
  w(1, 1) = "項目/日付"
  
  抽出先.CurrentRegion.ClearContents
  抽出先.Resize(dicY.Count, dicX.Count).Value = w
  
End Sub
・ツリー全体表示

【81042】Re:データベースから表を作成したのですが
質問  Aces  - 19/7/24(水) 8:54 -

引用なし
パスワード
   ピボットをやってみたのですが、表にしたいデータが

数字だけでなく、文字(例えば10↓...10以下)もあり、

データの個数としてだけ一覧表になってしまいました

何か他に良い方法はあるでしょうか?

よろしくおねがいします
・ツリー全体表示

【81041】Re:データベースから表を作成したのですが
お礼  Aces  - 19/7/24(水) 6:45 -

引用なし
パスワード
   なるほど、ピボットテーブルですか

そう言えば、そんな機能あったなー、忘れてました笑

やはり1人だと、頭が凝り固まってしまうのですね

マナさん、本当にありがとうございました

ピボット、マクロ合わせて試してみます
・ツリー全体表示

【81040】Re:データが入っている最後の行
お礼  Aces  - 19/7/24(水) 6:41 -

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

色々試しながらやってみたいと思います

わからなかった時は、またご教授下さい
・ツリー全体表示

【81039】Re:データベースから表を作成したのですが
発言  マナ  - 19/7/23(火) 22:03 -

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

こんな手順でもよいかも。

1)一覧シートのA列に、フィルタオプションで項目名を転記
  抽出条件は、見出しシートのNo,とする。
2)見出しシートのNo,をコピーして、一覧シートに行列を入れ替えて貼り付け
3)一覧シートにSUMIFS関数で数量を計算

まずは手作業で試してみるとよいです。
・ツリー全体表示

【81038】Re:データベースから表を作成したのですが
発言  マナ  - 19/7/23(火) 18:40 -

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

レイアウトは少し異なりますが
ピボットテーブルを使えば同じような結果が得られます。
手操作だけでできる、とても便利な機能です。
・ツリー全体表示

【81037】データベースから表を作成したのですが
質問  Aces  - 19/7/23(火) 16:33 -

引用なし
パスワード
   見出シート、詳細シート、一覧シートがあります

見出シートのa列にあるデータで詳細シートのa列をフィルタをかけて抽出し

一覧シートにデータを貼り付ける

という作業です

(見出シート)
    A   ,   B   ,   C
1,
2,   No. ,
3,190721,
4,190722,

(詳細シート)抽出前
    A   ,   B   ,   C   ,  D
1,
2,No.  , 項目No.,項目名,数量
3,190721,  1   , りんご ,  5
4,190721,  2   , バナナ ,  6
5,190721,  3   , パイン ,  3
6,190722,  1   , りんご ,  2
7,190725,  1   , りんご ,  9
8,170101,  1   , りんご ,  8
9,170101,  2   , バナナ ,  4

(詳細シート)抽出後
    A   ,   B   ,   C   ,  D
1,
2, No.  , 項目No.,項目名,数量
3,190721,  1   , りんご ,  5
4,190721,  2   , バナナ ,  6
5,190721,  3   , パイン ,  3
6,190722,  1   , りんご ,  2


(一覧シート)
    A   ,   B   ,   C  
1,
2,項目/日,190721,190722
3,りんご ,  5   ,   2
4,バナナ ,  6   ,   -
5,パイン ,  3   ,   -

実際は数千行あるため、手作業だととても時間がかかってしまいます

こういうことがvbsで出来るのであれば教えて頂いたいです

ご面倒ではありますが、よろしくおねがいします
・ツリー全体表示

【81036】Re:データが入っている最後の行
発言  リスキーダック  - 19/7/23(火) 16:24 -

引用なし
パスワード
   >Lastlow や cells ( ) end などを使用すれば良いのでしょうか?

Lastlowが、言いたい事は解りのだけれど、何なのか解りません。
データ状態や人によって違いますが、一般的には
(どんな一般的なのか知らないけれど)

Range("E" & rows.count).end(xlup).row
Cells(rows.count,5).end(xlup).row

とか、使ってE、F列のどちらを使うか判定したり・・・。

けど、データの編集操作が荒い人には、使わないでセルを選択する方法にしたり。
データの下にどんなゴミが入っているのか解らないので・・・。
(下の方にゴミが入っているために500行しかないのに遅いと言われるのも腹が立つので)

注)Cells.lows.count 古いエクセルと混成ようならシートを指定した方がいいかも。

では。
・ツリー全体表示

【81035】データが入っている最後の行
質問  TK  - 19/7/23(火) 15:44 -

引用なし
パスワード
   E2とF2のデータを&で合成してA2に上書きし、

それをデータがある行まで行いたいのですが、どうすれば良いのでしょうか?

データが時には1000行、時には2000行と毎回違うので

Lastlow や cells ( ) end などを使用すれば良いのでしょうか?

ご教授、願います
・ツリー全体表示

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