6 :デフォルトの名無しさん:2011/02/22(火) 10:40:12.18
表示形式が、文字列(A)、数値(B)、日付(C)の値のみを消去する場合
1)Range("A1:C50").value = ""
2)Range("A1:C50").ClearContents
上記1,2、どちらでもOKか?
8 :デフォルトの名無しさん:2011/02/23(水) 07:14:27.98
>>6
jsk駄目だろ?
例えば後ろにデータがないときMsgBox Range("A1000").End(xlUp).Addressってやってみなよ。
9 :6:2011/02/23(水) 13:40:24.46
>>8
確認した。ありがと。
220 :デフォルトの名無しさん:2011/03/19(土) 12:20:02.65
VBAでADOを使ってデータをCSVから読み込む時、
金額列が一行目に5000、100行目に99999999999
という感じであるとRecordSetがintegerとして型を扱うのか、
100行目のデータがnullになってしまいます。
RecordSetの型認識を明示的に行う方法ってあるでしょうか。
order by 金額 descとすればいけるかと思いましたが、
金額列が複数あるので、その方法では解決しなさそうです。
221 :デフォルトの名無しさん:2011/03/19(土) 12:41:47.61
いっそのこと、Getstringメソッドで文字列として読み込んで後で数値に変換するとか
222 :デフォルトの名無しさん:2011/03/19(土) 13:18:54.47
2147483647
99999999999
vbaのlong型だと、何があっても不思議じゃない数字だね。
223 :デフォルトの名無しさん:2011/03/19(土) 14:10:12.68
>>220
せめてプロパイダ何使ったかぐらい書け
Jetならschema.ini書けば行けるんじゃなかろうか
225 :デフォルトの名無しさん:2011/03/19(土) 23:58:51.18
私はVBA初心者です。質問させていただきます。エクセルで、キーボード入力で
遊べる簡単なゲームを作りました。一応、ゲーム中は問題なく遊べるのですが、
ゲーム終了直後に多くのセルに文字が入力されてしまいます。ゲーム中に押した
「z」や「→」などの入力が、ゲーム終了直後にシートに反映されてしまっている
ようです(おそらく)。それらの文字を毎回消すのは面倒なので、どのように
すれば文字だらけにならないで済むか教えていただきたいです。
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
sub ゲーム()
Do while ゲーム継続条件
If GetAsyncKeyState(40) <> 0 Then
・
・
・
end if
Loop
一応、こんな流れです。
226 :デフォルトの名無しさん:2011/03/20(日) 01:16:26.80
>>225
最後に全データを消せばいいのでは
Cells.Clear
227 :デフォルトの名無しさん:2011/03/20(日) 01:42:35.95
>>226
レスありがとうございます。
そのシートには、ゲームの途中経過や記録など、消えてほしくないデータもたくさん
あるので、全データを消すわけにはいきません。また、一応最後にcells.clearを書いて
見たところ、他のデータはすべて消えましたが、その後に「z」などが入力されてしまい
ました><
228 :デフォルトの名無しさん:2011/03/20(日) 02:10:21.02
チェンジイベントで消せば
229 :デフォルトの名無しさん:2011/03/20(日) 02:52:57.32
>>228
レスありがとうございます。
チェンジイベントで消すという発想はなかったです!ゲーム終了直後にセルに文字が入力
されることに変わりはないので、セルが高速で選択されまくるのは少し気になりますが、
それらを手作業で消す必要がなくなったので問題はありません。ありがとうございました!
241 :デフォルトの名無しさん:2011/03/22(火) 04:13:57.49
>>229
落書き用のシートを作ればいいんじゃ?
230 :デフォルトの名無しさん:2011/03/20(日) 07:47:58.79
エクセルのマクロで斜めの波線(ジグザグ線?)は引けないでしょうか?
A1セルの左上からC3セルの右下まで波線を引いたり、
A1セルの左上からA3セルの右下まで波線を引けると助かります。
231 :デフォルトの名無しさん:2011/03/20(日) 11:36:39.78
>>230
Excelのバージョンは?
234 :デフォルトの名無しさん:2011/03/20(日) 17:15:47.83
>>231
2003です。
235 :デフォルトの名無しさん:2011/03/20(日) 20:43:10.88
>>234
' ほい。できたよ
' セルを選択してから実行すると
Sub 選択範囲に斜めの波線を引く()
p = 1.4 ' ピッチ この数字に比例して波が大きくなる
With Selection
w = .Width
h = .Height
x = .Left
y = .Top + h / 2
l = Sqr(w * w + h * h)
With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x, y)
For i = 1 To l / p
x = x + 2
y = y + 2 * Sgn(i Mod 4 - 1.5)
.AddNodes msoSegmentCurve, msoEditingAuto, x, y
Next
.ConvertToShape.Select
End With
With Selection.ShapeRange
.Width = l
.Height = .Height / 2 * p
.IncrementTop 2
.IncrementLeft (w - l) / 2
.IncrementRotation Atn(h / w) * 180 / 3.1415927
End With
.Select
End With
End Sub
236 :235:2011/03/21(月) 03:18:30.50
一カ所修正
下から7行目、破線の位置を決めてる部分だけど
画面上で見る場合はこの方がピッタリになる
.IncrementTop 2.3 - p * 1.1
印刷時はまた違ってくるだろうけど、今すぐには確認できん
237 :デフォルトの名無しさん:2011/03/21(月) 07:50:28.08
>>230
線の外に文字でも入力するの?
そうじゃなきゃセルを結合すれば簡単
238 :デフォルトの名無しさん:2011/03/21(月) 16:17:48.75
>>237
どうやるの?
罫線だと波線は選べないよね
239 :デフォルトの名無しさん:2011/03/21(月) 19:47:08.57
>>237
そうか破線じゃできないな。
点線と勘違いしたよ。
>>235-236
A1:B10だとおかしくなるね。
240 :デフォルトの名無しさん:2011/03/22(火) 00:21:24.81
できあがった波線をマウスで左に移動しようとしても、A列の端まで持っていけないね
面白い現象だ
373 :質問:2011/04/02(土) 15:19:09.76
検索シートでコンボボックスを作り、コンボボックスのボタンをクリックしたら
自動的に"カテゴリ"シートにある最新データを表示できるようにしたいのですが
うまくいきません。
どうも◆の部分で"カテゴリ"シートに切り替わっていないようなんですが、
なぜ"カテゴリ"シートが選択されないのかわからず困っています。
どこがおかしいのでしょうか?
Private Sub ComboBox1_DropButtonClick()
Dim i As Integer
Application.ScreenUpdating = False
Worksheets("カテゴリ").Select
If Range("A2").Value = "" Then '◆
i = 3
Else
i = Range("A1").End(xlDown).Rows
End If
Worksheets("カテゴリ").Names.Add Name:="カテゴリ1", RefersTo:=Range("A2:A" & i)
Worksheets("Sheet1").Select
Application.ScreenUpdating = True
End Sub
375 :デフォルトの名無しさん:2011/04/02(土) 15:40:54.59
>>373
カテゴリシートに切り替えても
Rangeで取得されるのは、そのコードが書かれている親だよ
VBEのプロジェクトエクスプローラ見れば、どこに書いているか解る
なので
Worksheets("カテゴリ").Range("A2").Value '(With使っても良し)
とするか、どうしても切り替えたいなら
Worksheets("カテゴリ").Activate
ActiveSheet.Range("A2").Value
としな
>>374
もう出てこなくていいよ
君のレベルじゃ話にならないから
376 :373:2011/04/02(土) 15:47:12.88
>>375
できました おかげで先に進むことができます
ありがとうございました
512 :デフォルトの名無しさん:2011/04/09(土) 19:48:00.49
OS:XP Excel2003
A.xls B.csv があります。
Bの入力補助としてAを使いたいのですが、
AからBを開いて、
BのセルをダブルクリックするとAのフォームが開く、
という動作は可能でしょうか?
個人用マクロブックを使えば出来そうな気がしますが、
可能なら使わないで処理をしたいと考えています。
513 :デフォルトの名無しさん:2011/04/09(土) 20:04:54.61
>>512
俺はできないと思う
csvファイルはイベントも使えないしマクロも保存できないと思うから。
B.csvがB.xlsならできるだろうが
514 :デフォルトの名無しさん:2011/04/09(土) 20:16:16.08
AからBを開いてBにマクロを登録、みたいなことはできそうな
515 :デフォルトの名無しさん:2011/04/09(土) 21:17:06.86
>512
やりたい事はこんな事?
フォームを開かせる処理は作ってないけど
B.csvのセルをダブルクリックした時のアドレスを表示するようにしてみた
A.xlsの 標準モジュール
Sub テスト()
Dim CSV As Workbook
Set CSV = Workbooks.Open(FileName:="C:\TEMP\B.csv") 'CSVを開く
Set ThisWorkbook.CSVEv = CSV
End Sub
A.xlsの ThisWorkbookモジュール
Public WithEvents CSVEv As Workbook
Private Sub CSVEv_SheetBeforeDoubleClick(ByVal Sh As Object, _
ByVal Target As Excel.Range, _
Cancel As Boolean)
'イベント時の処理
MsgBox Target.Address
End Sub
516 :デフォルトの名無しさん:2011/04/09(土) 21:44:55.91
そういえば昔tsvで>>515みたいなことやったな
フォームよりはコンテキストメニュー拡張しての入力補助だったが
まあVB6でCSV・TSVエディタ自作してからは、わざわざExcel使うことも無くなったけど
最終更新:2011年04月18日 17:38