Excel VBA質問箱 IV

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

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


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

【75683】Re:ダブルクリックでシート移動
回答  hamako  - 14/6/12(木) 23:15 -

引用なし
パスワード
   今、私がネットからコピペした
マクロだと、シート1の操作をせずにシート2の引用したいセルを
ダブルクリックすると、
"先に転記先のセルをクリックしてから、このシートでダブルクリックしてください"
と出るのでできればそのようにしたいです。

質問の回答になってるでしょうか。。。m(__)m

ちなみに、
売上伝票を発行する為のエクセルで、
シート1が売上伝票作成画面で
売上伝票はA1に得意先コード、
B1に作業コードの記載が必要であり、
シート2が得意先コード一覧
シート3が作業コード一覧というエクセルを作ってます。

どうかよろしくお願いしますm(__)m
・ツリー全体表示

【75682】Re:フォームが消える
回答  とおりすがり  - 14/6/12(木) 23:09 -

引用なし
パスワード
   普通はそんなことにはならないから、再現できるコードが無いと、回答は付きにくい。

個人情報入力フォームの付属情報入力フォームを呼び出すコード以外と、付属情報入力フォームのコードをコメント化して、再現するかどうか。
再現しなかったら、少しずつコメントを解除してどのコードが影響してるか確かめるとか。
・ツリー全体表示

【75681】Re:オートシェイプの表示・非表示 visi...
回答  とおりすがり  - 14/6/12(木) 23:01 -

引用なし
パスワード
   それで本当に動くのか?
"をテキストボックス1の前後にいれて、文字列にしてやらないとダメでは?

Msgbox Me.Shapes(テキストボックス1).TopLeftCell.Address
とかいれて、目的とするShapeか確かめるとか。

あと、本題とは関係無いが、TargetがどのCellか判断してやらないとうっとおしく無いか?
・ツリー全体表示

【75680】オートシェイプの表示・非表示 visible...
質問  hoda  - 14/6/12(木) 22:40 -

引用なし
パスワード
   VBA初心者です。
もうすでにいろいろマクロが組まれているエクセルに、
オートシェイプの表示・非表示のマクロを組み入れたいです。
指定したセルに「1」が入力されているときのみ、表示されるマクロです。

しかし、本当に入れたいシートに下記マクロを組み入れても動きません。 

同じエクセル内に、新しくsheet1を作り、同じマクロを入れると
ちゃんと動きます。

何か、動かない要因が考えられますでしょうか。

Microsoft Excel Objects のシートで、Worksheet の Changeに
下記マクロを入れています。

Private Sub Worksheet_Change(ByVal Target As Range)

If Cells(1, 1) = 1 Then
  MsgBox "1が入力"
  ActiveSheet.Shapes(テキストボックス1).Visible = True
  
Else
  MsgBox "1以外が入力されてます"
  ActiveSheet.Shapes(テキストボックス1).Visible = False
  
End If
  
End Sub

一緒にメッセージボックスを入れると、メッセージは出ているので、
プログラムは走っていると思います。
よろしくお願いします。
・ツリー全体表示

【75679】Re:ダブルクリックでシート移動
発言  γ  - 14/6/12(木) 20:35 -

引用なし
パスワード
   ▼hamako さん:
基本的な事をお尋ねしますが、
シート1の操作を経由せずに、直接、シート2のセルをダブルクリックしたときは、
どのように考えるのですか?
履歴を考えるのかどうか、ということです。
・ツリー全体表示

【75678】ダブルクリックでシート移動
質問  hamako  - 14/6/12(木) 19:55 -

引用なし
パスワード
   初めて利用します。よろしくお願いします。
★やりたい事★★★★★★★
エクセルは2010使用。
1.シート1のA1をダブルクリックするとシート2移動→シート2で選択したセルをダブルクリックすると
選択したセルの内容がシート1のA1に入る。
2.シート1のB1をダブルクリックすると今度はシート3に移動→シート3で選択したセルをダブルクリックすると
選択したセルの内容がシート1のB1に入る。
★★★★★★★★★★★★★★

1.については Alt+F11の画面の
「ThisWorkbook」の中に下記を入れたらできました。
(よくわからずネットからコピペしたらできてしまいました)

Dim ToCell As Range
Const shName2 As String = "シート2"


Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Sh Is Sheets(shName2) Then
If ToCell Is Nothing Then
MsgBox "先に転記先のセルをクリックしてから、このシートでダブルクリックしてください"
Exit Sub
End If
ToCell.Value = Target.Value
Application.Goto ToCell
Set ToCell = Nothing
Else
Set ToCell = Target
Sheets(shName2).Activate
End If
End Sub

しかし、
これだと1.は私の望み通りの事ができるのですが
シート1内のセルをダブルクリックするとすべてシート2に飛んでしまうのです。
B1をダブルクリックした場合はシート3に飛んで2.のような事をしたいのです。
さらに欲をいうと
シート1のA1、B1以外のセルをダブルクリックした場合は
他のシートに飛ばないようにしたいです。

お手数ですがご教授ください。
・ツリー全体表示

【75677】フォームが消える
質問  ゆーあ  - 14/6/12(木) 17:02 -

引用なし
パスワード
   エクセル2000

個人情報入力フォームに、
付属情報入力フォーム呼び出し用のコマンドボタンを設置しており、
コマンドボタンを押すと付属情報入力フォームが、
個人情報入力フォームの上に開くのですが、
付属情報入力フォームをフォーム右上の×ボタンで閉じると、
個人情報入力フォームも一緒に閉じてしまいます。

個人情報入力フォームには、他のフォーム呼び出し用の
コマンドボタンも設置してますが、他のフォームは閉じても、
個人情報入力フォームまで消えることはありません。

原因が分からず大変困ってますので、
どなたかご教授頂ければ幸いで御座います。
宜しくお願い致します。
・ツリー全体表示

【75676】Re:同じフォルダ内での作業について
お礼  マリモ  - 14/6/12(木) 14:48 -

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

このたびは細かく教えてくださり、誠にありがとうございます。
1つ1つ作業をすると時間がかかってしまうので
大変助かりました。

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

【75675】Re:同じフォルダ内での作業について
お礼  マリモ  - 14/6/12(木) 14:44 -

引用なし
パスワード
   ▼γ さん:
>ちなみに、ファイル(ブック)と書くべき所をシートと書いているのは変です。
>フォルダ − ファイル(ブック) − シート
>という構造です。

シートではなく、ファイル(ブック)でした。
ご指摘ありがとうございました。

無事解決できましたので
ありがとうございました。
・ツリー全体表示

【75674】Re:同じフォルダ内での作業について
発言  kanabun  - 14/6/12(木) 10:23 -

引用なし
パスワード
   >▼マリモ さん:

もうひとつ、確認してからフィルタ作業に入れるように
メッセージボックスで確認するようにすると安心でしょう

>  v = r.Resize(, 3).Value '表のA,B,C列を配列に格納
>  For i = 2 To UBound(v) '重複をカットした抽出項目を作成
>    dic(v(i, 1) & "_" & v(i, 2) & "_" & v(i, 3)) = Empty
>  Next

のあとに 以下を挿入してください。

  If MsgBox("この表のD~F列を " & dic.Count _
   & "個のBookに転記しますか?", _
    vbOKCancel) = vbCancel Then Exit Sub
・ツリー全体表示

【75673】Re:同じフォルダ内での作業について
発言  kanabun  - 14/6/12(木) 10:19 -

引用なし
パスワード
   >▼マリモ さん:

>  '------ 抽出データをコピー
>  r.Columns("D:F").Copy
>  copyBook.Worksheets(1).Range("H1").PasteSpecial Transpose:=True
>  copyBook.Save
>  copyBook.Close False
>  
>  r.AutoFilter

のところは 2つ目以降の表のとき、[H1]へ上書きコピーしてしまうので
都合が悪いです。
その部分、たとえば以下のように修正してください。

  '------ 抽出データをコピー
  Dim CopyTo As Range
  r.Columns("D:F").Copy
  Set CopyTo = copyBook.Worksheets(1).Cells(Rows.Count, "H").End(xlUp)
  If CopyTo.Row > 1 Then Set CopyTo = CopyTo.Offset(1)
  CopyTo.PasteSpecial Transpose:=True
  copyBook.Save
  copyBook.Close False
  
  r.AutoFilter
・ツリー全体表示

【75672】Re:同じフォルダ内での作業について
発言  kanabun  - 14/6/12(木) 10:04 -

引用なし
パスワード
   ▼マリモ さん:

元表のあるBookとは 別に マクロをおくBookを作ってください。
そのマクロBook の標準モジュールに コードを書きます。
たとえば以下。
元表をファイルダイアログを使って開き、そのシート1の表を
フィルタで(A,B,C列項目種類別に)別Bookに抽出コピーします。
(任意の月・日・番号 で抽出し 別Bookに転記するくり返しの部分は
読みやすさのために サブプロシージャに独立させてます)

'------------------------------------------------------ 標準モジュール
Option Explicit

Sub test1()
  Dim srcFName
  Dim orgBook As Workbook
  Dim OrgSheet As Worksheet
  Dim bookPath As String
  Dim r As Range
  
  '元表ファイルを開く
  srcFName = Application.GetOpenFilename("元表Book,*.xls*")
  If VarType(srcFName) = vbBoolean Then Exit Sub
  
  Set orgBook = Workbooks.Open(srcFName) '元表のあるBook
  bookPath = orgBook.Path & "\"
  Set OrgSheet = orgBook.Worksheets(1) '元表のあるシート
  Set r = OrgSheet.Cells(1).CurrentRegion
  '元表のA,B,C列(月、日、番号)の種類リストを得る
  Dim v, i As Long
  Dim dic As Object 'リストオブジェクト
  Set dic = CreateObject("Scripting.Dictionary")
  v = r.Resize(, 3).Value '表のA,B,C列を配列に格納
  For i = 2 To UBound(v) '重複をカットした抽出項目を作成
    dic(v(i, 1) & "_" & v(i, 2) & "_" & v(i, 3)) = Empty
  Next
  
  'リストの順にフィルタをかけ、該当Bookに転記する
  Dim ky
  For Each ky In dic.Keys()
    FilterCopy ky, r, bookPath
  Next
  orgBook.Close False
End Sub

'-----------------------------------------------------------
'元表rに ky項目で AutoFilterをかけ、抽出データを該当Bookに
'転記する
Private Sub FilterCopy(ky, ByVal r As Range, bookPath$)
  Dim v
  v = Split(ky, "_")
  r.AutoFilter 1, Val(v(0)) 'A列を「月」で
  r.AutoFilter 2, Val(v(1)) 'B列を「日」で
  r.AutoFilter 3, Val(v(2)) 'C列を「番号」でFilter
  
  '抽出行はタイトル行以外に一行以上ある
  Dim bookName As String
  Dim copyBook As Workbook
  '転記先Bookはなければ新規作成する
  bookName = bookPath & ky & "_○○○.xls"
  On Error Resume Next
  Set copyBook = Workbooks.Open(bookName)
  On Error GoTo 0
  If copyBook Is Nothing Then
   Set copyBook = Workbooks.Add(xlWBATWorksheet)
   copyBook.SaveAs bookName
  End If
  '------ 抽出データをコピー
  r.Columns("D:F").Copy
  copyBook.Worksheets(1).Range("H1").PasteSpecial Transpose:=True
  copyBook.Save
  copyBook.Close False
  
  r.AutoFilter

End Sub
・ツリー全体表示

【75671】Re:処理する毎に変わるvlookupでの参照値
お礼  インフェルエンス  - 14/6/12(木) 9:59 -

引用なし
パスワード
   ▼γ さん:
自己解決できました。
ファイルを開く時に以下を指定すると問題解決しました。
UpdateLinks:=3

以上
・ツリー全体表示

【75670】Re:処理する毎に変わるvlookupでの参照値
発言  γ  - 14/6/11(水) 21:10 -

引用なし
パスワード
   コメントがつきませんが、それは、事象に再現性がないからだと思います。

こちらで、再現できる内容を提示してもらうと検証が可能です。
(それがないと、手のつけようがありません。お気の毒としか・・・・。)
・ツリー全体表示

【75669】Re:名前を付けて保存ダイアログの[ツール...
回答  とおりすがり  - 14/6/11(水) 20:21 -

引用なし
パスワード
   GetSaveFileNameはPathを設定するだけだから、ツールの項目なんてあったところで
意味ない。
・ツリー全体表示

【75668】Re:名前を付けて保存ダイアログの[ツール...
回答  小松  - 14/6/11(水) 13:29 -

引用なし
パスワード
   ▼小松 さん:
すみません、先ほど質問したものですが、

NEWFilename = Application.GetSaveAsFilename(ファイルのフルパス,・・・

を、

NEWFilename = Application.Dialogs(xlDialogSaveAs).Show(ファイルのフルパス)

にしたら解決しました。

解決はしたのですが、なぜGetSaveAsFilenameを使うと[ツール]メニューが正常に表示されなくなるのか、お分かりの方いたら教えていただきたいです。
・ツリー全体表示

【75667】名前を付けて保存ダイアログの[ツール]メ...
質問  小松  - 14/6/11(水) 13:00 -

引用なし
パスワード
   EXCEL2013を使っています。
VBAで 名前を付けて保存ダイアログボックスを表示させる際、
ダイアログボックスの下にある[ツール]メニューをクリックスすると、"ネットワークドライブの割り当て"しか出てきません。"Webオプション","全般オプション","図の圧縮"が出てきません。何がいけないのでしょうか?

NEWFilename = Application.GetSaveAsFilename(ファイルのフルパス, FileFilter:="Excelマクロ有効ファイル,*.xlsm,Excel 97-2003 ブック(*.xls), *.xls")


ちなみにVBAを使わず自分で ファイル→名前を付けて保存 にてダイアログボックスを表示させると、ちゃんと[ツール]メニューの中に"ネットワークドライブの割り当て"、"Web オプション"、"全般オプション"、"図の圧縮"が出てきます。

どなたか分かる方いらっしゃいましたら、ご教示よろしくお願いいたします。
・ツリー全体表示

【75666】Re:同じフォルダ内での作業について
発言  γ  - 14/6/11(水) 8:11 -

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

1. 特定の 月,日,番号 でオートフィルタをかける。
2. 月_日_番号の名前のファイルを開く
3. コピーペイストを行う
4. ファイルを閉じる
がワンセットです。
これを、色々な 月,日,番号 の組み合わせで繰り返します。
その組み合わせは、どこかのシートに予め作っておいて、
それを使うとよいでしょう。

こういうことでしょうか?
詰まっているところはどこですか?

ちなみに、ファイル(ブック)と書くべき所をシートと書いているのは変です。
フォルダ − ファイル(ブック) − シート
という構造です。
・ツリー全体表示

【75665】Re:同じフォルダ内での作業について
質問  マリモ  - 14/6/10(火) 16:45 -

引用なし
パスワード
   下記の部分が分からないので
教えていただけるとありがたいです。

説明が下手なので分かりづらいかもしれませんが・・・

同じフォルダ内に元となるエクセルシートがあり、
オートフィルタで3列選択するのですが、
その選択した時にコピーし、
オートフィルタで選択した名前で始まる同じフォルダ内の
他の沢山のエクセルシートに貼り付けを行ないたいです。

同じフォルダ内にある全てのエクセルシートに対して
オートフィルタと連動させるにはどうすれば良いのでしょうか。
・ツリー全体表示

【75664】Re:同じフォルダ内での作業について
お礼  マリモ  - 14/6/10(火) 9:37 -

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

ありがとうございます。
チャレンジしてみます。
・ツリー全体表示

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