VBAについて Ver.4.0

このエントリーをはてなブックマークに追加
909デフォルトの名無しさん
ワークシートの名前をそのシート内の某セルにするのができません。
無理なんでしょうかね?
910909:2005/09/15(木) 13:52:40
VBAでクリップボートにある値をシートの名前にすることができればいいのですが・・・
911デフォルトの名無しさん:2005/09/15(木) 14:04:29
"$D$3" 
912デフォルトの名無しさん:2005/09/15(木) 14:08:43
>>909
無理じゃないからがんがれ。
もちろんマルチするような奴が具体的な回答貰えないことは知ってるよな。
913デフォルトの名無しさん:2005/09/15(木) 14:13:53
worksheets("Sheet1").name=worksheets("Sheet3").range("d3").value
914909:2005/09/15(木) 14:14:27
昨日できたんですよw
なのに・・・忘れた
915デフォルトの名無しさん:2005/09/15(木) 14:17:50
あっ!思い出した! 事故解決の悪寒
916デフォルトの名無しさん:2005/09/15(木) 14:19:01
>>913の 左辺=右辺を入れ替えてもではますかね?
917デフォルトの名無しさん:2005/09/15(木) 14:23:49
またできなくなった(´・ω・`)ショボーン
918デフォルトの名無しさん:2005/09/15(木) 14:38:02
Worksheets("Sheet2").Name = Worksheets("Sheet1").Range("a1").Value"

はできるのですが、

Worksheets("Sheet2").Name = Worksheets("Sheet1").Range("a1:b1").Value"

はできません。

つまりa1セルに山田、b1セルに太郎と入力されている場合
Worksheets("Sheet2")の名前が「山田太郎」となればててのですが。

&を使えばうまくいくのかな?
919デフォルトの名無しさん:2005/09/15(木) 14:39:30
>>912
>マルチするような奴

してないってばまさか板違いでもマルチと呼ばれのか? (((( ;゚Д゚)))ガクガクブルブル
920デフォルトの名無しさん:2005/09/15(木) 14:43:51
> 板違いでもマルチと呼ばれのか?
当然
921デフォルトの名無しさん:2005/09/15(木) 14:50:29
>>920
いちいちチェックするなよw
向こうに書いて後でこっちに気づいたからココに書いたんだよ!

(ry

それはいいとしてセルA1とセルA2を別セル例えばA3に=A1&A2で合体させて

Worksheets("Sheet2").Name = Worksheets("Sheet1").Range("A3").Value
とすればいいのかな?

もう昨日の昼からいろいろやってとてつもない時間使ってるよ・・・
922デフォルトの名無しさん:2005/09/15(木) 14:53:45

> 向こうに書いて後でこっちに気づいたからココに書いたんだよ!

そう言う場合は、最初に書いたスレで質問を取り下げるのが礼儀という物
923デフォルトの名無しさん:2005/09/15(木) 14:57:46
>>922
工エエェェ(´д`)ェェエエ工

最初に書いたスレで質問を取り下げるの???

誰が決めたの?
暇人じゃないんだから
924デフォルトの名無しさん:2005/09/15(木) 14:59:32
> 誰が決めたの?
2chのみんな

> 暇人じゃないんだから
そう、皆暇人じゃないんだから、あちこちに無駄な質問ばらまいて
回答者に無駄な時間費やさせるような真似はしないように。
925デフォルトの名無しさん:2005/09/15(木) 15:01:06
>>905
EXCEL 2000だけど、マウス合わせたときの文字がこうやって取得できるから
一つ一つ変換。 こんなんでOKかな?

Dim cbp As CommandBarPopup
Dim ci As Long
Set cbp = CommandBars.FindControl(ID:=1691)
If cbp Is Nothing Then
MsgBox "見つかりませんでした。"
Else
Select Case cbp.TooltipText
Case "塗りつぶしの色 (自動)": ci = -4142
Case "塗りつぶしの色 (黒)": ci = 1
Case "塗りつぶしの色 (茶)": ci = 53
Case "塗りつぶしの色 (オリーブ)": ci = 52
Case "塗りつぶしの色 (濃い緑)": ci = 51
Case "塗りつぶしの色 (濃い青緑)": ci = 49
Case "塗りつぶしの色 (濃い青)": ci = 11
Case "塗りつぶしの色 (インディゴ)": ci = 55
Case "塗りつぶしの色 (80% 灰色)": ci = 56
Case "塗りつぶしの色 (濃い赤)": ci = 9
Case "塗りつぶしの色 (オレンジ)": ci = 46
Case "塗りつぶしの色 (濃い黄)": ci = 12
Case "塗りつぶしの色 (緑)": ci = 10
Case "塗りつぶしの色 (青緑)": ci = 14
Case "塗りつぶしの色 (青)": ci = 5
Case "塗りつぶしの色 (ブルーグレー)": ci = 47
Case "塗りつぶしの色 (50% 灰色)": ci = 16
Case "塗りつぶしの色 (赤)": ci = 3
Case "塗りつぶしの色 (薄いオレンジ)": ci = 45
Case "塗りつぶしの色 (ライム)": ci = 43
926デフォルトの名無しさん:2005/09/15(木) 15:01:38
質問者と回答者だけなら>>922も分かるが、見ているその他多数の人の為なら
質問取り下げるのはどうかね?
ほとんどの人が両方のスレなんて見てないしましてや板違いでっせ?
ダメだな〜
927925:2005/09/15(木) 15:02:27
Case "塗りつぶしの色 (シーグリーン)": ci = 50
Case "塗りつぶしの色 (アクア)": ci = 42
Case "塗りつぶしの色 (薄い青)": ci = 41
Case "塗りつぶしの色 (紫)": ci = 13
Case "塗りつぶしの色 (40% 灰色)": ci = 48
Case "塗りつぶしの色 (ピンク)": ci = 7
Case "塗りつぶしの色 (ゴールド)": ci = 44
Case "塗りつぶしの色 (黄)": ci = 6
Case "塗りつぶしの色 (明るい緑)": ci = 4
Case "塗りつぶしの色 (水色)": ci = 8
Case "塗りつぶしの色 (スカイブルー)": ci = 33
Case "塗りつぶしの色 (プラム)": ci = 54
Case "塗りつぶしの色 (25% 灰色)": ci = 15
Case "塗りつぶしの色 (ローズ)": ci = 38
Case "塗りつぶしの色 (ベージュ)": ci = 40
Case "塗りつぶしの色 (薄い黄)": ci = 36
Case "塗りつぶしの色 (薄い緑)": ci = 35
Case "塗りつぶしの色 (薄い水色)": ci = 34
Case "塗りつぶしの色 (ペールブルー)": ci = 37
Case "塗りつぶしの色 (ラベンダー)": ci = 39
Case "塗りつぶしの色 (白)": ci = 2
End Select
MsgBox ci
End If
928デフォルトの名無しさん:2005/09/15(木) 15:04:31
よくガイシュツの質問やスレ違いの質問にムキになる香具師がおるが
第三者の為に書いてやってるんだからな
929デフォルトの名無しさん:2005/09/15(木) 15:05:51
ガイシュツの質問に文句を言えるのはFAQをまとめている人間だけ
930デフォルトの名無しさん:2005/09/15(木) 15:06:36































 
931デフォルトの名無しさん:2005/09/15(木) 15:06:47































 
932デフォルトの名無しさん:2005/09/15(木) 15:07:14































なんかごちゃごちゃしてきたので、ここから心機一転
933デフォルトの名無しさん:2005/09/15(木) 15:09:41
とりあえず漏れの質問を整理しよう。

シート名にA1+B1の名前を付けたい 例) A1=山田  B=太郎 の場合「山田太郎」

C1=A1&B1にしておけば、

Worksheets("Sheet2").Name = Worksheets("Sheet1").Range("c3").Value

の記述でできた。

でも別の方法もあると思うのでそれを知りたい
934デフォルトの名無しさん:2005/09/15(木) 15:10:54
論破する奴は嫌い
935デフォルトの名無しさん:2005/09/15(木) 15:11:59
>>933
...で?
936デフォルトの名無しさん:2005/09/15(木) 15:14:07
>>934
ウケ狙ったの?
かなり面白いんだがw
937デフォルトの名無しさん:2005/09/15(木) 15:21:44
学年の1組と3組と4組(これは毎回変わる)の番号n〜m(これも毎回変わる)
を抽出させるVBA作るのは相当な知識が必要だろな・・・

これが全クラスの成績トップ10とかだったら簡単だけけうけど
はぁ・・・
938デフォルトの名無しさん:2005/09/15(木) 15:31:27
まだ初心者だけど、多分想像するにボタンとか作って
●年○組の成績が上位◎人分を抽出して印刷するとかいうのができるんだよね?
さっさと覚えたいが脳が働かるねぇー
939デフォルトの名無しさん:2005/09/15(木) 15:34:24
組が列方向に、番号が行方向に展開されていて、
指定組の指定番号範囲の値を抽出するとかなら
VBAなら簡単だし、VBA使わなくても出せるレベルだけど
もっと難しい事を想定してるの?
940デフォルトの名無しさん:2005/09/15(木) 16:53:22
 






























 
941デフォルトの名無しさん:2005/09/15(木) 20:45:10
>>925
おお、これは。。
目から鱗のテクニックです!
これで望んでいる機能を作ることができます。
ありがとうございました。
942デフォルトの名無しさん:2005/09/15(木) 21:23:40
>>939
もちろんそれは分かってる。
わかりやすく例えを学生の成績にしてるが
「全クラスのテストの点数が80点以上の人を抽出」だと簡単だが

「任意のクラスの任意の点数」の場合「任意」が多ければVBAで自動化するのも
あんま意味ないなと思って
943デフォルトの名無しさん:2005/09/15(木) 21:26:12
とりあえず、VBAはまだ始めたばかりです。
やりたいことを日本語で書いて、それをどうPCへ命令すればいいのか考えがおもしろみ
でもあり難しさでもあるよな。

とりうえず「この条件まで」「この場合」をマスターしないとな
944デフォルトの名無しさん:2005/09/15(木) 22:28:21
>>943
ExcelのVBAの場合はWorkbooks,Worksheets,Range,Cellsの基本をマスターすれば
かなり色々なことが出来ると思われ。
テクニックに走らず、基本から少しづつやれば上達は早いと思う。
945デフォルトの名無しさん:2005/09/15(木) 22:43:34
EXCELでコピーしたエリアを取得する方法ってありますか?
946デフォルトの名無しさん:2005/09/15(木) 22:48:13
具体的に
947デフォルトの名無しさん:2005/09/15(木) 23:17:55
>>946
すみませんレスありがとうございます。
VBA初心者です。

簡単なものをサンプル見たりして作っていますが今回書きましたのは
VBAを実行する前に、先に範囲を選択コピーしていた後を想定しています。
クリップボードにあるものを貼り付ける前にどのセル範囲がコピーされていたのか
を確認出来ればと思い投稿しました。
もう少し細かく書くとコピーされていた対象がセル単体なのか・複数セルの範囲なのか
行または列のみなのか等です。
948デフォルトの名無しさん:2005/09/15(木) 23:59:21
>>947
だから具体的に何を知りたいの?

シート上でコピー時に表示される破線枠の範囲を知りたいのか、
クリップボードのデータが単一セルの物か複数セルのものかを知りたいのか。

君の書き込みは結果ばかり先走っていて状況説明が不十分。
そもそも、範囲選択のみ手動で行い、コピー以降をVBAで行った方が効率良くないか?
範囲選択した状態ならSelection.Addressで選択範囲取れるし。
949デフォルトの名無しさん:2005/09/16(金) 00:39:47
>>948
すみません、説明が下手糞で・・
>そもそも、範囲選択のみ手動で行い、コピー以降をVBAで行った方が効率良くないか?
まさにそれをしようとしています。
何故コピーの範囲を確認したかったのかというと、貼り付ける場所はSelection.Addressを
使うつもりでした。
たとえば初めにコピーしていた範囲が行で貼り付けようとした場所が列だった場合など
エラーである理由をmsgboxで明確に表示させようと思ったからです。
単にエラーであるのを分岐させるならOn Error Goto・・で出来るのですが、、初めにコピー
をした範囲が明確であればこれを判断させるのも楽だと思いました。
950デフォルトの名無しさん:2005/09/16(金) 01:58:24
すみません・・補足になります。

>シート上でコピー時に表示される破線枠の範囲を知りたいのか
そうです!これです。
もし宜しければご指導お願いします。m(__)m
951ゆみ:2005/09/16(金) 02:40:31
>>828 の質問、お願いします
952デフォルトの名無しさん:2005/09/16(金) 02:41:14
また荒らしが、、、
953デフォルトの名無しさん:2005/09/16(金) 02:48:57
> 何故コピーの範囲を確認したかったのかというと、貼り付ける場所はSelection.Addressを
> 使うつもりでした。
別に貼り付ける場所にSelection使うのはいいけど、コピー範囲でもSelection使えばいいじゃん
例えばこんな感じとか

Private Sub CommandButton1_Click()
  Static hoge As Range
  If Application.CutCopyMode = xlCopy Then
    MsgBox "コピー範囲 :" & hoge.Address & vbCrLf & _
        "現在の選択範囲 :" & Selection.Address
    '張り付け処理
    Application.CutCopyMode = False
    Set hoge = Nothing
    CommandButton1.Caption = "Copy"
  Else
    Set hoge = Selection
    hoge.Copy
    CommandButton1.Caption = "Paste"
  End If
End Sub
954デフォルトの名無しさん:2005/09/16(金) 12:52:24
VBAで「今コピーしているもの」を貼り付けるには?

マクロの場合、上でやってみるとVBAでの記述は「今コピーしているもの」になりますよね?

そうではなく、例えばA1セルの値を貼りたいんです。

Name="A1"じゃ「A1」と貼られるしw
955デフォルトの名無しさん:2005/09/16(金) 13:41:46
>>954は釣りだな。間違いない。
956デフォルトの名無しさん:2005/09/16(金) 21:43:33
>>953
レスありがとうございます。
コピーは主にショートカット(Ctrl+C)を使うので、マクロのコピーにこれを
割り当ててコピーと一緒に選択範囲をPublic変数で持ち越して他のVBAで試す
ところまでは出来ていました。

ただそれをせずに、他にコピーの範囲がわかる方法があるのではと思い投稿
しました。
ヘルプをみたりしてみましたが、現状の自分のスキルではそこが限界みたいです。
どうもありがとうございました。
957デフォルトの名無しさん:2005/09/16(金) 22:31:47
>>955
釣りじゃないってw
ちょっと勉強不足
958デフォルトの名無しさん:2005/09/16(金) 22:32:49
Name="A1.value"でもダメなんだよな
959デフォルトの名無しさん:2005/09/16(金) 22:34:22
> Name="A1"じゃ「A1」と貼られるしw
当然

> Name="A1.value"でもダメなんだよな
当然
960デフォルトの名無しさん:2005/09/17(土) 01:07:39
質問です。
エクセルなんですが

0000        0000
0000        0000
0400        3456
0450  これを  3456
3456        3456
3456        3456
3456

のように4を基準として上方向にそろえるようなプログラム
を作りたいのですが、どのようにすればよいのでしょうか?
教えてください。お願いします。
961デフォルトの名無しさん:2005/09/17(土) 01:20:10
>>960
数値ではなく文字列として扱って
あとはループと条件分岐と文字列操作
VBAのテク的には超初歩的な機能だけでいける
あとのアルゴリズム的な部分はVBA関係なくお前の知能次第
962デフォルトの名無しさん:2005/09/17(土) 02:00:56
>>961
返答ありがとうございます。
しかしながら初心者で低能なため
それらをどう組み合わせていいものかよく分かりません…。
具体的に教えていただけると有難いです
963デフォルトの名無しさん:2005/09/17(土) 02:19:42
>>962
ここは「コード書いてください」スレじゃないので
「説明聞いて出来ない奴はVBAなんか使うな」で終わりですよ。
VBAについて知りたいのではなく、単に具体的なコードが欲しいだけなら
そういうのを請け負ってるところもあるから、そういうところで依頼しなさい。

参考までにひとつ有名所を
ttp://www.officetanaka.net/order/index.htm
964デフォルトの名無しさん:2005/09/17(土) 02:29:56
>>963
すいません。ありがとうございました
965デフォルトの名無しさん:2005/09/17(土) 07:12:41
>>964
ここならコードも書いてくれるぞ

Excel総合相談所 37
http://pc8.2ch.net/test/read.cgi/bsoft/1125178942/
966デフォルトの名無しさん:2005/09/17(土) 10:36:25
919 名前:デフォルトの名無しさん 投稿日:2005/09/15(木) 14:39:30
>>912
>マルチするような奴

してないってばまさか板違いでもマルチと呼ばれのか? (((( ;゚Д゚)))ガクガクブルブル
967デフォルトの名無しさん:2005/09/17(土) 10:43:58
>>966
間違った時点で質問権失ってますからその通りです。
968デフォルトの名無しさん:2005/09/17(土) 10:59:36
そもそも板違いじゃないしな
969デフォルトの名無しさん:2005/09/17(土) 13:43:54
shape.nodes は4個単位で座標が帰ってくるのですが、
両端ではない真ん中の2点って、何の座標でしょうか?
970964
>>965
ありがとうございます。
そろえるつもりが全て一番上に行ったり一つだけそろったり
と苦戦してるので行ってきます。