Excel VBA質問箱 IV

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

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


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

【75601】シートのコピーによる不具合
質問  レインツリー  - 14/5/23(金) 12:07 -

引用なし
パスワード
   以前同じ質問をさせていただいたのですが
再び問題が生じたため再質問させていただきます。


worksheets("A").copy after:=worksheets(worksheets.count)として
シートAをコピーしてシートBを作成します。

その後シートBに手入力で数値を入力すると
コピー元のシートAのセルに数値が入力されます。

ただ一度他のシートに移動して再びシートBに入力しようとすると
問題なく入力できます。

この現象が起こる理由が分からないのがまず一点目です。

このブックは知人に頼まれて作成したものなので
その知人に送付済みだったファイルを動作確認してもらったところ
問題なく動作したとのことです。

知人に送付したブックを再度転送してもらうと
私のPCでも問題なく作動したので一件落着したと思ったのですが
数日後にブックを起動してみるとまた最初の問題が再発していました。

そのため今度はブックを新規作成して作りなおし
元のブックのプログラムをコピーし新しいブックに貼り直して動作したところ
やはり問題が発生しました。

最初はプログラムに問題があると思い色々試してみたのですが
これはアプリケーション自体に問題があるのでしょうか?

何か対処法などがお分かりになる方がいらっしゃられましたら
ぜひご教授ください。

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

【75600】Re:カスタマイズしたメニューバーのアイ...
発言  γ  - 14/5/22(木) 22:02 -

引用なし
パスワード
   マルチポストは、こちらもサロンも禁止です。
こちらは閉じて下さい。
・ツリー全体表示

【75599】Re:言葉に対応した言葉を自動入力する
お礼  ドカ  - 14/5/22(木) 21:52 -

引用なし
パスワード
   ▼γ さん:回答ありがとうございます。
うまくいきました。


Sub test()
  Dim colorArray
  Dim dic As Object
  Dim k As Long, j As Long
  Dim s As String
  Dim cellA As Range

  colorArray = Split("赤、青、黄、緑、水色、紫、橙", "、")

  Set dic = CreateObject("Scripting.Dictionary")

  Set cellA = ActiveCell
  
  k = -1
  For j = 1 To cellA.End(xlDown).Row - cellA.Row + 1
    's = Cells(j, 1).Value
    s = cellA.Offset(j - 1, 0).Value
    If Not dic.Exists(s) Then
      k = k + 1
      dic(s) = colorArray(k)
    End If
    cellA.Offset(j - 1, 1).Value = dic(s)
  Next

  Set dic = Nothing
End Sub
・ツリー全体表示

【75598】カスタマイズしたメニューバーのアイコン...
質問  Rex  - 14/5/22(木) 21:50 -

引用なし
パスワード
   こんにちは。
カスタマイズしたメニューバーを作りました。メニューのアイコンをクリックするとセル内の値のチェックをします。チェック済みということがわかるように、チェック後クリックしたアイコンの絵を変えるマクロを作りたいのですが、どなたかご存じのかた、お願いします。
・ツリー全体表示

【75597】Re:言葉に対応した言葉を自動入力する
発言  γ  - 14/5/22(木) 21:02 -

引用なし
パスワード
   単に、同じものには同じ色を、異なるものには異なる色を対応させたい、
ということですか?
それなら下記のようなことでしょうか。

Sub test()
  Dim colorArray
  Dim dic As Object
  Dim k As Long, j As Long
  Dim s As String

  colorArray = Split("赤、青、黄、緑、水色、紫、橙", "、")

  Set dic = CreateObject("Scripting.Dictionary")

  k = -1
  For j = 1 To Range("A1").End(xlDown).Row
    s = Cells(j, 1).Value
    If Not dic.Exists(s) Then
      k = k + 1
      dic(s) = colorArray(k)
    End If
    Cells(j, 2).Value = dic(s)
  Next

  Set dic = Nothing
End Sub
・ツリー全体表示

【75596】Re:言葉に対応した言葉を自動入力する
発言  カリーニン  - 14/5/22(木) 20:51 -

引用なし
パスワード
   おっしゃってることが矛盾しています。

>本屋や花屋はいつも決まった言葉ではなく、どんな言葉が出てくるかわかりません。
>ですから、コードの中に本屋などを書くことなく実現したいのですが。

となるとセルなどに対応表を作っておくしかないと思います。

>対応表を作るなど事前作業をすることが大変なので、マクロで自動的に行いたいと思っています。

セルなどに対応表を作っておかないとなるとハードコーディングするしかないと思うのですが。
最終的にどういうことをしたいのかが見えません。
・ツリー全体表示

【75595】Re:名前をつけて保存にセルの文字列を入...
お礼  [名前なし]  - 14/5/22(木) 20:49 -

引用なし
パスワード
   ▼γ さん:
>▼mon さん:
>>セルの内容については 年月日(2014.05.20)と作業名です。
>>拡張子はいれておりません。
>
>拡張子の入力がないと、
>2014.05.20 に登場する ドット . のために、
>間違った拡張子判定を行い、そのために文字列表示がされないのでしょう。
>
>きちんと拡張子を入れると、正常に表示されると思います。
おっしゃるとおりでした。
どこのどなたかわかりませんが、ご丁寧にありがとうございました。
助かりました。
・ツリー全体表示

【75594】Re:言葉に対応した言葉を自動入力する
発言  ドカ  - 14/5/22(木) 20:43 -

引用なし
パスワード
   ▼カリーニン さん:
対応表を作るなど事前作業をすることが大変なので、マクロで自動的に行いたいと思っています。

お分かりの方よろしくお願いいたします。
・ツリー全体表示

【75593】Re:言葉に対応した言葉を自動入力する
発言  カリーニン  - 14/5/22(木) 20:31 -

引用なし
パスワード
   >本屋や花屋はいつも決まった言葉ではなく、どんな言葉が出てくるかわかりません。
>ですから、コードの中に本屋などを書くことなく実現したいのですが。

↓は試しましたか?

>一般機能のVLOOKUPを使う、作業用セルに対応表を作っておいてFindメソッドなどで引っ張ってくる、などいろんな方法があります。
・ツリー全体表示

【75592】Re:言葉に対応した言葉を自動入力する
発言  ドカ  - 14/5/22(木) 20:20 -

引用なし
パスワード
   ▼カリーニン さん:
回答ありがとうございます。

本屋や花屋はいつも決まった言葉ではなく、どんな言葉が出てくるかわかりません。
ですから、コードの中に本屋などを書くことなく実現したいのですが。
・ツリー全体表示

【75591】Re:名前をつけて保存にセルの文字列を入...
発言  γ  - 14/5/22(木) 19:53 -

引用なし
パスワード
   ▼mon さん:
>セルの内容については 年月日(2014.05.20)と作業名です。
>拡張子はいれておりません。

拡張子の入力がないと、
2014.05.20 に登場する ドット . のために、
間違った拡張子判定を行い、そのために文字列表示がされないのでしょう。

きちんと拡張子を入れると、正常に表示されると思います。
・ツリー全体表示

【75590】Re:言葉に対応した言葉を自動入力する
発言  カリーニン  - 14/5/22(木) 19:52 -

引用なし
パスワード
    >Next c

この下に下記のコードを付加しておいてください。

 mydic.RemoveAll
 Set mydic = Nothing
・ツリー全体表示

【75589】Re:言葉に対応した言葉を自動入力する
回答  カリーニン  - 14/5/22(木) 19:47 -

引用なし
パスワード
   一般機能のVLOOKUPを使う、作業用セルに対応表を作っておいてFindメソッドなどで引っ張ってくる、などいろんな方法があります。

Dictionaryオブジェクトを使った方法です。

Sub test()
Dim mydic As Object
Dim mykey As String
Dim r As Range
Dim c As Range
 Set mydic = CreateObject("Scripting.Dictionary")
 mydic.Add "本屋", "赤"
 mydic.Add "花屋", "青"
 mydic.Add "鞄", "黄"
 mydic.Add "靴下", "緑"
 Set r = Selection
 For Each c In r
  mykey = c.Value
  If mydic.exists(mykey) Then c.Offset(, 1).Value = mydic(mykey)
 Next c
End Sub
・ツリー全体表示

【75588】言葉に対応した言葉を自動入力する
質問  ドカ  - 14/5/22(木) 19:22 -

引用なし
パスワード
   ある列に色々な言葉が入っています。
その列の言葉ごとに、色を表す言葉をマクロで入れたいです。
ある列の最初の言葉(本屋)が書かれているセルがアクティブになっていて、
そこを基準として処理をするものとします。

ある列 隣の列
本屋   赤
花屋   青
本屋   赤
鞄    黄
靴下   緑
鞄    黄
・    ・
・    ・
・    ・

色は、赤、青、黄、緑、水色、紫、橙・・・・と10種類くらいでしょうか。

お分かりの方、よろしくお願いいたします。
・ツリー全体表示

【75587】Re:名前をつけて保存にセルの文字列を入...
回答  mon  - 14/5/22(木) 9:26 -

引用なし
パスワード
   ▼マルチネス さん:
>回答者への参考として。
>
>tp://www.excel.studio-kazu.jp/kw/20140521210320.html
>
>tp://www.vbalab.net/bbspolicy.html
>
>>マルチポストについて
>>別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。当質問箱では、マルチポストは原則認めています。つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。
>>しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。質問しっぱなし、というのはモラルに反します。「解決したからいいや」というのではありません。
>>また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。
・ツリー全体表示

【75586】Re:名前をつけて保存にセルの文字列を入...
回答  mon  - 14/5/22(木) 9:24 -

引用なし
パスワード
   ▼γ さん:
>A1セルには拡張子も含めてファイル名が入っているのでしょうか。
>そうであれば、Text関数などを介さなくても問題ないはずです。
>A1セルの内容を教えてください。

ありがとうございます。
セルの内容については 年月日(2014.05.20)と作業名です。
拡張子はいれておりません。

ご親切にすみません。
・ツリー全体表示

【75585】Re:名前をつけて保存にセルの文字列を入...
発言  マルチネス  - 14/5/22(木) 0:23 -

引用なし
パスワード
   回答者への参考として。

tp://www.excel.studio-kazu.jp/kw/20140521210320.html

tp://www.vbalab.net/bbspolicy.html

>マルチポストについて
>別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。当質問箱では、マルチポストは原則認めています。つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。
>しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。質問しっぱなし、というのはモラルに反します。「解決したからいいや」というのではありません。
>また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。
・ツリー全体表示

【75584】Re:名前をつけて保存にセルの文字列を入...
発言  γ  - 14/5/21(水) 22:33 -

引用なし
パスワード
   Arg2を指定する必要があるケースかもしれませんね。

  Application.Dialogs(xlDialogSaveAs).Show Arg1:="aabb.xls", Arg2:=56
   '.xls  (97-2003)  xlExcel8            (56)
   '.xlsx       xlOpenXMLWorkbook       (51)
   '.xlsm       xlOpenXMLWorkbookMacroEnabled (52)
・ツリー全体表示

【75583】Re:名前をつけて保存にセルの文字列を入...
発言  γ  - 14/5/21(水) 22:03 -

引用なし
パスワード
   A1セルには拡張子も含めてファイル名が入っているのでしょうか。
そうであれば、Text関数などを介さなくても問題ないはずです。
A1セルの内容を教えてください。
・ツリー全体表示

【75582】名前をつけて保存にセルの文字列を入力す...
質問  mon  - 14/5/21(水) 21:13 -

引用なし
パスワード
   お世話になります。
名前をつけて保存にセルの文字列を入力するマクロを作成したのですが動作しませんのでよろしくお願いいたします。
B1のセルに=TEXT(A1,"")と設定し文字列に変換しています。

マクロで
Sub B1セルをファイル名にするマクロ()
Application.Dialogs(xlDialogSaveAs).Show Arg1:=Range("B1").Value
End Sub
と設定してもファイル名が入りません。
おそらくB1のセルに文字列指定していますが関数を書き込んでいるので反映されていないと勝手に推測しております。
ご教授のほど、よろしくお願いいたします。
・ツリー全体表示

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